home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / BARNET / COMPILER / SATHER / !Sather / System / Common / CONFIG < prev   
Text File  |  1997-06-08  |  81KB  |  1,496 lines

  1. -- This file has been created by using cpp on CONFIG.proto 
  2. -- in this directory and by using many variables defined 
  3. -- in the top level Makefile. Please do not edit it 
  4. -- Configuration File for the Sather Compiler Version 1.1
  5. -- some options for the compiler (see the runtime spec
  6. -- for a detailed description of them).
  7.  
  8.  
  9. PLATFORMS:              "riscos,unix";
  10. DEFAULT_PLATFORM:       "riscos";
  11. DISTRIBUTED:            false;
  12. THREADS:                false;
  13. ZONES:                  false;
  14. TRACE:                  false;
  15. LIBRARY:                "SATHER_LIBRARY","Library/Lib.sam";
  16. VERSION:                "1.1";
  17. CC_OPTIONS:             "";
  18. C_COMPILER:             "gcc ";
  19. GC_LINK:                "CS:gc.o";
  20. LINK_OPTIONS:           "-lm";
  21. MAKE_COMMAND:           "amu";
  22. OBJECT_EXT:             ".o";
  23. LIB_EXT:                ".o";
  24. C_EXT:                  ".c";
  25. SHELL_SEP:              "\n";
  26. EXEC_OPTION:            "-o ";
  27. NULL_SEGFAULTS:         false;
  28. SEPARATE_POINTERS:      false;
  29. PSATHER_FLAG:           "","";
  30. CC_DEBUG_FLAG:          "","-g";
  31. CC_OPTIMIZE_FLAG:       "","-O2";
  32. CC_PROLIX_FLAG:         "",""; -- passed to the C compiler (prolix implies verbose)
  33. MAKE_VERBOSE_FLAG:      "-s","-s"; -- passed to make
  34.  
  35. FORTRAN_APPEND_UNDERSCORE:      "false";
  36. FORTRAN_PREFIX_UNDERSCORE:      "false";
  37. FORTRAN_BIND_FUNC:              "true";
  38.  
  39. -- Define here all classes if their assignment is guaranteed to
  40. -- be atomic (by the underlying Compiler/Hardware). Those classes may NOT
  41. -- have a reference object as attribute, but the list is not restricted
  42. -- to builtin classes. If you add a class here that is not atomic,
  43. -- you will get very hard to trace bugs, and if you forget to add
  44. -- some classes, your program runs slower. Note that you should not
  45. -- try to add classes by trial and error, as an error may show up
  46. -- only much too late.
  47. ATOMIC_CLASSES:         "INT","CHAR","FLT","FLTD","BOOL","CPX","PREFETCH","THREAD_ID", "F_INTEGER", "F_REAL", "F_CHARACTER", "F_LOGICAL", "F_DOUBLE", "F_COMPLEX";
  48.  
  49. -- List here all classes whose layout is defined in runtime.h (or
  50. -- some other header file)
  51. BUILTIN_CLASSES:        "$OB","INT","CHAR","BOOL","STR","FLT","FLTD",
  52.                         "FLTX","FLTDX", "EXT_OB", "RUNTIME", "C_UNIX",
  53.                         "THREAD_ID","PREFETCH","LL_LOCK","SPINLOCK",
  54.  
  55.                         "F_INTEGER", "F_REAL", "F_CHARACTER", "F_LOGICAL",
  56.                         "F_DOUBLE", "F_COMPLEX", "F_DOUBLE_COMPLEX",
  57.                         "F_STRING", "F_HANDLER",
  58.  
  59.                         "F_ARRAY{F_INTEGER}", "F_ARRAY{F_REAL}", 
  60.                         "F_ARRAY{F_CHARACTER}", "F_ARRAY{F_LOGICAL}", 
  61.                         "F_ARRAY{F_DOUBLE}", "F_ARRAY{F_COMPLEX}", 
  62.                         "F_ARRAY{F_DOUBLE_COMPLEX}",
  63.  
  64.                         "F_ARRAY2{F_INTEGER}", "F_ARRAY2{F_REAL}", 
  65.                         "F_ARRAY2{F_CHARACTER}", "F_ARRAY2{F_LOGICAL}", 
  66.                         "F_ARRAY2{F_DOUBLE}", "F_ARRAY2{F_COMPLEX}", 
  67.                         "F_ARRAY2{F_DOUBLE_COMPLEX}",
  68.  
  69.                         "F_ARRAY3{F_INTEGER}", "F_ARRAY3{F_REAL}", 
  70.                         "F_ARRAY3{F_CHARACTER}", "F_ARRAY3{F_LOGICAL}", 
  71.                         "F_ARRAY3{F_DOUBLE}", "F_ARRAY3{F_COMPLEX}", 
  72.                         "F_ARRAY3{F_DOUBLE_COMPLEX}",
  73.  
  74.                         C_CHAR, C_UNSIGNED_CHAR, C_SIGNED_CHAR, C_SHORT, 
  75.                         C_INT, C_LONG, C_UNSIGNED_SHORT, C_UNSIGNED_INT, 
  76.                         C_UNSIGNED_LONG, C_FLOAT, C_DOUBLE, C_LONG_DOUBLE,
  77.                         C_PTR, C_CHAR_PTR, C_UNSIGNED_CHAR_PTR, 
  78.                         C_SIGNED_CHAR_PTR, C_SHORT_PTR, C_INT_PTR, C_LONG_PTR,
  79.                         C_UNSIGNED_SHORT_PTR, C_UNSIGNED_INT_PTR, 
  80.                         C_UNSIGNED_LONG_PTR, C_FLOAT_PTR, C_DOUBLE_PTR, 
  81.                         C_LONG_DOUBLE_PTR, C_SIZE_T, C_PTRDIFF_T;
  82.  
  83.  
  84. -- Here you should list all the builtin classes that are reference free,
  85. -- that is, they do not have an attribute of an abstract or reference type
  86. REFERENCE_FREE:         "INT","CHAR","BOOL","STR","FLT","FLTD",
  87.                         "FLTX","FLTDX",
  88.                         "F_INTEGER","F_REAL", "F_CHARACTER","F_LOGICAL",
  89.                         "F_DOUBLE", "F_COMPLEX", "F_DOUBLE_COMPLEX",
  90.                         "THREAD_ID","PREFETCH";
  91.  
  92. POLLING:                0;
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102. AREF_ASIZE:                     no_pre,no_post,reads "@0::asize",
  103.                                 attr_access 1,
  104.                                 var "@r $$;",exec "$$=ASIZE(@(0)$0);" "$$",
  105.                                 f_var "@r $$;",f_exec "if(^0) $$=ASIZE(@(0)$0); else READASIZE($$,@0,$0);" "$$";
  106. AREF_AGET:                      no_pre,no_post,reads "@0::[]" "@0::asize",
  107.                                 attr_access 1 0 0,
  108.                                 var "@r $$;",
  109.                                 exec "$$=@(r)ARR(@(0)$0,$1);" "$$",
  110.                                 f_exec "#if %r==0"   "\tif(^0) $$=@(r)ARR(@(0)$0,$1); else F_R_RARR_NA($$,@0,$0,$1);" 
  111.                                        "#elif %r==1" "\tif(^0) $$=@(r)ARR(@(0)$0,$1); else F_VA_RARR_NA($$,@0,$0,$1);" 
  112.                                        "#elif %r==2" "\tif(^0) VASS_LP($$,@r,ARR(@(0)$0,$1)); else F_V_RARR_LP(@r,$$,@0,$0,$1);" 
  113.                                        "#endif" "$$";
  114. AREF_ASET:                      no_pre,no_post,writes "@0::[]",reads "@0::asize",
  115.                                 attr_access 1 0 0,
  116.                                 exec "SARR(@(0)$0,$1,@(2)$2);",
  117.                                 f_exec "#if %2==0" "\tif(^0) SARR(@(0)$0,$1,@(2)$2); else F_R_WARR_NA(@0,$0,$1,$2);" 
  118.                                        "#elif %2==1" "\tif(^0) SARR(@(0)$0,$1,@(2)$2); else F_VA_WARR_NA(@0,$0,$1,$2);" 
  119.                                        "#elif %2==2" "\tif(^0) { CHK_BOUNDS($1,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$1],@2,$2);} else F_V_WARR_LP(@0,$0,$1,@2,$2);" 
  120.                                        "#endif";
  121. AREF_ACLEAR:                    no_pre,no_post,writes "@0::[],@0::asize",
  122.                                 attr_access 1, -- the implementation is about as expensive as one access in pSather
  123.                                 exec "AREFACLEAR($0);",
  124.                                 f_exec "if(^0) AREFACLEAR($0); else F_AREFACLEAR_A(@0,$0);";
  125. AREF_ACOPY:                     no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  126.                                 attr_access 5 5,
  127.                                 exec "AREFACOPY($0,$1);",
  128.                                 f_exec "if(^0 && ^1) AREFACOPY($0,$1); else F_AREFACOPY_AA(@0,@P0,$0,$1);";
  129. AREF_ACOPY_BEG:                 no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  130.                                 attr_access 5 0 5,
  131.                                 exec "AREFACOPYB($0,$1,$2);",
  132.                                 f_exec "if(^0 && ^2) AREFACOPYB($0,$1,$2); else F_AREFACOPYB_AA(@0,@P0,$0,$1,$2);";
  133. AREF_ACOPY_BEG_NUM:             no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  134.                                 attr_access 5 0 0 5,
  135.                                 exec "AREFACOPYBN($0,$1,$2,$3);",
  136.                                 f_exec "if(^0 && ^3) AREFACOPYBN($0,$1,$2,$3); else F_AREFACOPYBN_AA(@0,@P0,$0,$1,$2,$3);";
  137. AREF_ACOPY_BEG_NUM_SRCBEG:      no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  138.                                 attr_access 5 0 0 0 5,
  139.                                 exec "AREFACOPYBNS($0,$1,$2,$3,$4);",
  140.                                 f_exec "if(^0 && ^4) AREFACOPYBNS($0,$1,$2,$3,$4); else F_AREFACOPYBNS_AA(@0,@P0,$0,$1,$2,$3,$4);";
  141.  
  142. AREF_AELTB:                     reads  "@0::[]" "@0::asize",
  143.                                 attr_access 1,
  144.                                 var    "INT $$br;",
  145.                                 init   "$$br=ASIZE(@(0)$0);",
  146.                                 break  "$$br",
  147.                                 temp   "@r a$$;",
  148.                                 iter   "a$$=ARR(@(0)$0,$#);" "a$$",
  149.                                 f_init "if(^0) $$br=ASIZE(@(0)$0); else $$br=F_ASIZE(@0,$0);",
  150.                                 f_iter "#if %r==0" "if(^0) a$$=ARR(@(0)$0,$#); else F_R_RARR_NA(a$$,@0,$0,$#);" 
  151.                                        "#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$#); else F_VA_RARR_NA(a$$,@0,$0,$#);" 
  152.                                        "#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);" 
  153.                                        "#endif" "a$$";
  154. AREF_AELT_BEGB:                 reads  "@0::[]" "@0::asize",
  155.                                 attr_access 1 0,
  156.                                 var    "INT $$c,$$s;",
  157.                                 temp   "@r a$$;",
  158.                                 init   "$$c=$1-1;$$s=ASIZE(@(0)$0);",
  159.                                 f_init "$$c=$1-1;$$s=F_ASIZE(@0,$0);",
  160.                                 iter   "if(++$$c>=$$s) @@;"
  161.                                        "a$$=ARR(@(0)$0,$$c);" "a$$",
  162.                                 f_iter "if(++$$c>=$$s) @@;"
  163.                                        "#if %r==0" "if(^0) a$$=ARR(@(0)$0,$$c); else F_R_RARR_NA(a$$,@0,$0,$$c);" 
  164.                                        "#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$$c); else F_VA_RARR_NA(a$$,@0,$0,$$c);" 
  165.                                        "#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);" 
  166.                                        "#endif" "a$$";
  167. AREF_AELT_BEG_NUMB:             reads  "@0::[]" "@0::asize",
  168.                                 attr_access 1 0 0,
  169.                                 var    "INT $$c,$$m;",
  170.                                 temp   "@r a$$;",
  171.                                 init   "$$c=$1-1;$$m=$1+$2;",
  172.                                 iter   "if(++$$c>=$$m) @@;"
  173.                                        "a$$=ARR(@(0)$0,$$c);" "a$$",
  174.                                 f_iter "if(++$$c>=$$m) @@;"
  175.                                        "#if %r==0" "if(^0) a$$=ARR(@(0)$0,$$c); else F_R_RARR_NA(a$$,@0,$0,$$c);" 
  176.                                        "#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$$c); else F_VA_RARR_NA(a$$,@0,$0,$$c);" 
  177.                                        "#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);" 
  178.                                        "#endif"
  179.                                        "a$$";
  180. AREF_AELT_BEG_NUM_STEPB:        reads  "@0::[]" "@0::asize",
  181.                                 attr_access 1 0 0 0,
  182.                                 var    "INT $$c,$$m;",
  183.                                 temp   "@r a$$;",
  184.                                 init   "$$c=$1;$$m=$1+$2*$3;",
  185.                                 iter   "if($3>=0&&$$c>=$$m||$3<0&&$$c<=$$m) @@;"
  186.                                        "a$$=ARR(@(0)$0,$$c);" "$$c+=$3;" "a$$",
  187.                                 f_iter "if($$c>=$$m) @@;"
  188.                                        "#if %r==0" "if(^0) a$$=ARR(@(0)$0,$$c); else F_R_RARR_NA(a$$,@0,$0,$$c);" 
  189.                                        "#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$$c); else F_VA_RARR_NA(a$$,@0,$0,$$c);" 
  190.                                        "#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);" 
  191.                                        "#endif" "$$c+=$3;" "a$$";
  192. AREF_ASETB:                     writes "@0::[]",
  193.                                 attr_access 1,
  194.                                 reads  "@0::asize",
  195.                                 var    "INT $$br;",
  196.                                 init   "$$br=ASIZE(@(0)$0);",
  197.                                 f_init "$$br=F_ASIZE(@0,$0);",
  198.                                 break  "$$br",
  199.                                 iter   "SARR(@(0)$0,$#,@(1)$1);",
  200.                                 f_iter "#if %1==0" "if(^0) SARR(@(0)$0,$#,@(1)$1); else F_R_WARR_NA(@0,$0,$#,$1);" 
  201.                                        "#elif %1==1" "if(^0) SARR(@(0)$0,$#,@(1)$1); else F_VA_WARR_NA(@0,$0,$#,$1);" 
  202.                                        "#elif %1==2" "if(^0) { CHK_BOUNDS($#,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$#],@1,$1);} else F_V_WARR_LP(@0,$0,$#,@1,$1);" 
  203.                                        "#endif";
  204. AREF_ASET_BEGB:                 writes "@0::[]",
  205.                                 reads  "@0::asize",
  206.                                 attr_access 1 0,
  207.                                 var    "INT $$c,$$s;",
  208.                                 init   "$$c=$1-1;$$s=ASIZE(@(0)$0);",
  209.                                 f_init "$$c=$1-1;$$s=F_ASIZE(@0,$0);",
  210.                                 iter   "if(++$$c>=$$s) @@;"
  211.                                        "SARR(@(0)$0,$$c,@(2)$2);",
  212.                                 f_iter "if(++$$c>=$$s) @@;"
  213.                                        "#if %2==0" "if(^0) SARR(@(0)$0,$$c,@(2)$2); else F_R_WARR_NA(@0,$0,$$c,$2);" 
  214.                                        "#elif %2==1" "if(^0) SARR(@(0)$0,$$c,@(2)$2); else F_VA_WARR_NA(@0,$0,$$c,$2);" 
  215.                                        "#elif %2==2" "if(^0) { CHK_BOUNDS($$c,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$$c],@2,$2);} else F_V_WARR_LP(@0,$0,$$c,@2,$2);" 
  216.                                        "#endif";
  217. AREF_ASET_BEG_NUMB:             writes "@0::[]",
  218.                                 reads  "@0::asize",
  219.                                 attr_access 1 0 0,
  220.                                 var    "INT $$c,$$m;",
  221.                                 init   "$$c=$1-1;$$m=$1+$2;",
  222.                                 iter   "if(++$$c>=$$m) @@;"
  223.                                        "SARR(@(0)$0,$$c,@(3)$3);",
  224.                                 f_iter "if(++$$c>=$$m) @@;"
  225.                                        "#if %3==0" "if(^0) SARR(@(0)$0,$$c,@(1)$3); else F_R_WARR_NA(@0,$0,$$c,$3);" 
  226.                                        "#elif %3==1" "if(^0) SARR(@(0)$0,$$c,@(1)$3); else F_VA_WARR_NA(@0,$0,$$c,$3);" 
  227.                                        "#elif %3==2" "if(^0) { CHK_BOUNDS($$c,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$$c],@3,$3);} else F_V_WARR_LP(@0,$0,$$c,@3,$3);" 
  228.                                        "#endif";
  229. AREF_ASET_BEG_NUM_STEPB:        reads  "@0::[]",
  230.                                 writes "@0::asize",
  231.                                 attr_access 1 0 0 0,
  232.                                 var    "INT $$c,$$m;",
  233.                                 init   "$$c=$1;$$m=$1+$2*$3;",
  234.                                 iter   "if($$c>=$$m) @@;"
  235.                                        "SARR(@(0)$0,$$c,@(4)$4);" "$$c+=$3;",
  236.                                 f_iter "if($$c>=$$m) @@;"
  237.                                        "#if %4==0" "if(^0) SARR(@(0)$0,$$c,@(1)$4); else F_R_WARR_NA(@0,$0,$$c,$4);" 
  238.                                        "#elif %4==1" "if(^0) SARR(@(0)$0,$$c,@(1)$4); else F_VA_WARR_NA(@0,$0,$$c,$4);" 
  239.                                        "#elif %4==2" "if(^0) { CHK_BOUNDS($$c,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$$c],@4,$4);} else F_V_WARR_LP(@0,$0,$$c,@4,$4);" 
  240.                                        "#endif" "$$c+=$3;";
  241. AREF_AINDB:                     reads  "@0::asize",
  242.                                 attr_access 0,
  243.                                 var    "INT $$br;",
  244.                                 init   "$$br=ASIZE(@(0)$0);",
  245.                                 f_init "if(^0) $$br=ASIZE(@(0)$0); else $$br=F_ASIZE(@0,$0);",
  246.                                 break  "$$br",
  247.                                 temp   "@r r$$;",
  248.                                 iter   "r$$=$#;" "r$$";
  249.  
  250. AREF_ARRAY_PTR:                 exec   "(void *)$0->arr_part";
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257. -- THIS FILE IS WRONG FOR pSather and VALUE TYPES!
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265. AVAL_ASIZE:                     no_pre,no_post,reads "@0::asize",
  266.                                 var "@r $$;",exec "$$=VASIZE(@0);" "$$";
  267. AVAL_AGET:                      no_pre,no_post,reads "@0::[]" "@0::asize",
  268.                                 var "@r $$;",
  269.                                 exec "$$=@(r)VARR(@0,$0,$1);" "$$";
  270. AVAL_ASET:                      no_pre,no_post,writes "@0::[]",reads "@0::asize",
  271.                                 var "@r $$;",
  272.                                 exec "$$=$0;VSARR(@0,$$,$1,@(2)$2);" "$$";
  273. AVAL_ACOPY:                     no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  274.                                 var "@r $$;",
  275.                                 exec "$$=$0;AVALACOPY(@0,$$,$1);" "$$";
  276. AVAL_ACOPY_BEG:                 no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  277.                                 var "@r $$;",
  278.                                 exec "$$=$0;AVALACOPYB(@0,$$,$1,$2);" "$$";
  279. AVAL_ACOPY_BEG_NUM:             no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  280.                                 var "@r $$;",
  281.                                 exec "$$=$0;AVALACOPYBN(@0,$$,$1,$2,$3);" "$$";
  282. AVAL_ACOPY_BEG_NUM_SRCBEG:      no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  283.                                 var "@r $$;",
  284.                                 exec "$$=$0;AVALACOPYBNS(@0,$$,$1,$2,$3,$4);" "$$";
  285.  
  286. AVAL_AELTB:                     reads "@0::[]" "@0::asize",
  287.                                 var "INT $$br;",
  288.                                 init "$$br=VASIZE(@0);",
  289.                                 break "$$br",
  290.                                 temp "@r a$$;",
  291.                                 iter "a$$=VARR(@0,$0,$#);" "a$$";
  292. AVAL_AELT_BEGB:                 reads "@0::[]" "@0::asize",
  293.                                 var  "INT $$c,$$s;",
  294.                                 temp "@r a$$;",
  295.                                 init "$$c=$1-1;$$s=VASIZE(@0);",
  296.                                 iter "if(++$$c>=$$s) @@;"
  297.                                      "a$$=VARR(@0,$0,$$c);" "a$$";
  298. AVAL_AELT_BEG_NUMB:             reads "@0::[]" "@0::asize",
  299.                                 var  "INT $$c,$$m;",
  300.                                 temp "@r a$$;",
  301.                                 init "$$c=$1-1;$$m=$1+$2;",
  302.                                 iter "if(++$$c>=$$m) @@;"
  303.                                      "a$$=VARR(@0,$0,$$c);" "a$$";
  304. AVAL_AELT_BEG_NUM_STEPB:        reads "@0::[]" "@0::asize",
  305.                                 var  "INT $$c,$$m;",
  306.                                 temp "@r a$$;",
  307.                                 init "$$c=$1;$$m=$1+$2*$3;",
  308.                                 iter "if($3>=0&&$$c>=$$m||$3<0&&$$c<=$$m) @@;"
  309.                                      "a$$=VARR(@0,$0,$$c);" "$$c+=$3;" "a$$";
  310. AVAL_AINDB:                     reads "@0::asize",
  311.                                 var "INT $$br;",
  312.                                 init "$$br=VASIZE(@0);",
  313.                                 break "$$br",
  314.                                 temp "@r r$$;",
  315.                                 iter "r$$=$#;" "r$$";
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331. BOOL_NOT:       no_pre,no_post,var "@r $$;",exec "$$=!($0);" "$$";
  332. BOOL_IS_EQ:     no_pre,no_post,var "@r $$;",exec "$$=$0==$1;" "$$";
  333. BOOL_INT:       no_pre,no_post,var "@r $$;",exec "$$=(INT)$0;" "$$";
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351. CHAR_IS_EQ:     no_pre,no_post,var "@r $$;",exec "$$=$0==$1;" "$$";
  352. CHAR_INT:       no_pre,no_post,var "@r $$;",exec "$$=(INT)((unsigned char)$0);" "$$";
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376. -- the following definitions assume that all floating point 
  377. -- operations return NaN if used with wrong arguments (a la IEEE)
  378. -- If this is not the case for some machines, all functions that
  379. -- could break should get a 'fragile'
  380. FLT_PLUS:       no_pre,no_post,var "@r $$;",exec "$$=$0+$1;" "$$";
  381. FLT_MINUS:      no_pre,no_post,var "@r $$;",exec "$$=$0-$1;" "$$";
  382. FLT_NEGATE:     no_pre,no_post,var "@r $$;",exec "$$= -$0;" "$$";
  383. FLT_TIMES:      no_pre,no_post,var "@r $$;",exec "$$=$0*$1;" "$$";
  384. FLT_DIV:        no_pre,no_post,var "@r $$;",exec "$$=FLTDIV($0,$1);" "$$";
  385. FLT_IS_EQ:      no_pre,no_post,var "@r $$;",exec "$$=($0)==($1);" "$$";
  386. FLT_IS_LT:      no_pre,no_post,var "@r $$;",exec "$$=($0)<($1);" "$$";
  387. IR_ISNORMAL:    no_pre,no_post,var "@r $$;",declare "_FM_B_F(isnormal)",exec "$$=ir_isnormal($0);" "$$";
  388. IR_ISSUBNORMAL: no_pre,no_post,var "@r $$;",declare "_FM_B_F(issubnormal)",exec "$$=ir_issubnormal($0);" "$$";
  389. IR_ISZERO:      no_pre,no_post,var "@r $$;",declare "_FM_B_F(iszero)",exec "$$=ir_iszero($0);" "$$";
  390. IR_SIGNBIT:     no_pre,no_post,var "@r $$;",declare "_FM_B_F(signbit)",exec "$$=ir_signbit($0);" "$$";
  391. IR_ILOGB:       no_pre,no_post,var "@r $$;",declare "_FM_I_F(ilogb)",exec "$$=ir_ilogb($0);" "$$";
  392. R_COPYSIGN:     no_pre,no_post,var "@r $$;",declare "_FM_F_F(copysign)",exec "$$=r_copysign($0,$1);" "$$";
  393. R_NEXTUP:       no_pre,no_post,var "@r $$;",declare "_FM_F_FF(nextafter)",exec "$$=r_nextafter($0,1.0);" "$$";
  394. R_NEXTDOWN:     no_pre,no_post,var "@r $$;",declare "_FM_F_FF(nextafter)",exec "$$=r_nextafter($0,-1.0);" "$$";
  395. R_REMAINDER:    no_pre,no_post,var "@r $$;",declare "_FM_F_F(remainder)",exec "$$=r_remainder($0,$1);" "$$";
  396. R_FMOD:         no_pre,no_post,var "@r $$;",declare "_FM_F_FF(fmod)",exec "$$=r_fmod($0,$1);" "$$";
  397. R_SCALBN:       no_pre,no_post,var "@r $$;",declare "_FM_F_FI(scalbn)",exec "$$=r_scalbn($0,$1);" "$$";
  398. R_J0:           no_pre,no_post,var "@r $$;",declare "_FM_F_F(j0)",exec "$$=r_j0($0);" "$$";
  399. R_J1:           no_pre,no_post,var "@r $$;",declare "_FM_F_F(j1)",exec "$$=r_j1($0);" "$$";
  400. R_JN:           no_pre,no_post,var "@r $$;",declare "_FM_F_IF(jn)",exec "$$=r_jn($1,$0);" "$$";
  401. R_Y0:           no_pre,no_post,var "@r $$;",declare "_FM_F_F(y0)",exec "$$=r_y0($0);" "$$";
  402. R_Y1:           no_pre,no_post,var "@r $$;",declare "_FM_F_F(y1)",exec "$$=r_y1($0);" "$$";
  403. R_YN:           no_pre,no_post,var "@r $$;",declare "_FM_F_IF(yn)",exec "$$=r_yn($1,$0);" "$$";
  404. R_ERF:          no_pre,no_post,var "@r $$;",declare "_FM_F_F(erf)",exec "$$=r_erf($0);" "$$";
  405. R_ERFC:         no_pre,no_post,var "@r $$;",declare "_FM_F_F(erfc)",exec "$$=r_erfc($0);" "$$";
  406. R_EXP:          no_pre,no_post,var "@r $$;",declare "_FM_F_F(exp)",exec "$$=r_exp($0);" "$$";
  407. R_EXPM1:        no_pre,no_post,var "@r $$;",declare "_FM_F_F(expm1)",exec "$$=r_expm1($0);" "$$";
  408. R_EXP2:         no_pre,no_post,var "@r $$;",declare "_FM_F_F(exp2)",exec "$$=r_exp2($0);" "$$";
  409. R_EXP10:        no_pre,no_post,var "@r $$;",declare "_FM_F_F(exp10)",exec "$$=r_exp10($0);" "$$";
  410. R_LOG:          no_pre,no_post,var "@r $$;",declare "_FM_F_F(log)",exec "$$=r_log($0);" "$$";
  411. R_LOG1P:        no_pre,no_post,var "@r $$;",declare "_FM_F_F(log1p)",exec "$$=r_log1p($0);" "$$";
  412. R_LOG10:        no_pre,no_post,var "@r $$;",declare "_FM_F_F(log10)",exec "$$=r_log10($0);" "$$";
  413. R_POW:          no_pre,no_post,var "@r $$;",declare "_FM_F_FF(pow)",exec "$$=r_pow($0,$1);" "$$";
  414. R_SINH:         no_pre,no_post,var "@r $$;",declare "_FM_F_F(sinh)",exec "$$=r_sinh($0);" "$$";
  415. R_COSH:         no_pre,no_post,var "@r $$;",declare "_FM_F_F(cosh)",exec "$$=r_cosh($0);" "$$";
  416. R_TANH:         no_pre,no_post,var "@r $$;",declare "_FM_F_F(tanh)",exec "$$=r_tanh($0);" "$$";
  417. R_ASINH:        no_pre,no_post,var "@r $$;",declare "_FM_F_F(asinh)",exec "$$=r_asinh($0);" "$$";
  418. R_ACOSH:        no_pre,no_post,var "@r $$;",declare "_FM_F_F(acosh)",exec "$$=r_acosh($0);" "$$";
  419. R_ATANH:        no_pre,no_post,var "@r $$;",declare "_FM_F_F(atanh)",exec "$$=r_atanh($0);" "$$";
  420. R_HYPOT:        no_pre,no_post,var "@r $$;",declare "_FM_F_FF(hypot)",exec "$$=r_hypot($0,$1);" "$$";
  421. R_SIN:          no_pre,no_post,var "@r $$;",declare "_FM_F_F(sin)",exec "$$=r_sin($0);" "$$";
  422. R_COS:          no_pre,no_post,var "@r $$;",declare "_FM_F_F(cos)",exec "$$=r_cos($0);" "$$";
  423. SINCOS:         no_pre,no_post,exec "sincos($0,&$1,&$2);";
  424. R_TAN:          no_pre,no_post,var "@r $$;",declare "_FM_F_F(tan)",exec "$$=r_tan($0);" "$$";
  425. R_ASIN:         no_pre,no_post,var "@r $$;",declare "_FM_F_F(asin)",exec "$$=r_asin($0);" "$$";
  426. R_ACOS:         no_pre,no_post,var "@r $$;",declare "_FM_F_F(acos)",exec "$$=r_acos($0);" "$$";
  427. R_ATAN:         no_pre,no_post,var "@r $$;",declare "_FM_F_F(atan)",exec "$$=r_atan($0);" "$$";
  428. R_ATAN2:        no_pre,no_post,var "@r $$;",declare "_FM_F_FF(atan2)",exec "$$=r_atan2($0,$1);" "$$";
  429. R_SINPI:        no_pre,no_post,var "@r $$;",declare "_FM_F_F(sinpi)",exec "$$=r_sinpi($0);" "$$";
  430. R_COSPI:        no_pre,no_post,var "@r $$;",declare "_FM_F_F(cospi)",exec "$$=r_cospi($0);" "$$";
  431. SINCOSPI:       no_pre,no_post,exec "sincospi($0,&$1,&$2);";
  432. R_TANPI:        no_pre,no_post,var "@r $$;",declare "_FM_F_F(tanpi)",exec "$$=r_tanpi($0);" "$$";
  433. R_ASINPI:       no_pre,no_post,var "@r $$;",declare "_FM_F_F(asinpi)",exec "$$=r_asinpi($0);" "$$";
  434. R_ACOSPI:       no_pre,no_post,var "@r $$;",declare "_FM_F_F(acospi)",exec "$$=r_acospi($0);" "$$";
  435. R_ATANPI:       no_pre,no_post,var "@r $$;",declare "_FM_F_F(atanpi)",exec "$$=r_atanpi($0);" "$$";
  436. R_ATAN2PI:      no_pre,no_post,var "@r $$;",declare "_FM_F_FF(atan2pi)",exec "$$=r_atan2pi($0,$1);" "$$";
  437. R_FABS:         no_pre,no_post,var "@r $$;",declare "_FM_F_F(fabs)",exec "$$=r_fabs($0);" "$$";
  438. R_LGAMMA:       no_pre,no_post,var "@r $$;",declare "_FM_F_F(lgamma)",exec "$$=r_lgamma($0);" "$$";
  439. R_SQRT:         no_pre,no_post,var "@r $$;",declare "_FM_F_F(sqrt)",exec "$$=r_sqrt($0);" "$$";
  440. R_CBRT:         no_pre,no_post,var "@r $$;",declare "_FM_F_F(cbrt)",exec "$$=r_cbrt($0);" "$$";
  441. ATOF:           no_pre,no_post,var "@r $$;",exec "$$=atof($1->arr_part);" "$$";
  442. FLT_INT:        no_pre,no_post,var "@r $$;",exec "$$=FLTINT($0);" "$$";
  443. FLT_FLTD:       no_pre,no_post,var "@r $$;",exec "$$=(@r)$0;" "$$";
  444. FLT_FLTX:       no_pre,no_post,var "@r $$;",exec "$$=(@r)$0;" "$$";
  445. FLT_FLTDX:      no_pre,no_post,var "@r $$;",exec "$$=(@r)$0;" "$$";
  446. FLT_TRUNCATE:   no_pre,no_post,var "@r $$;",exec "$$=FLTTRUNCATE($0);" "$$";
  447. R_FLOOR:        no_pre,no_post,var "@r $$;",declare "_FM_F_F(floor)",exec "$$=r_floor($0);" "$$";
  448. R_CEIL:         no_pre,no_post,var "@r $$;",declare "_FM_F_F(ceil)",exec "$$=r_ceil($0);" "$$";
  449. FLT_ROUND:      no_pre,no_post,var "@r $$;",exec "$$=FLTROUND($0);" "$$";
  450. R_SIGNALING_NAN:no_pre,no_post,var "@r $$;",declare "_FM_F_I(signaling_nan)",exec "$$=r_signaling_nan($1);" "$$";
  451. R_QUIET_NAN:    no_pre,no_post,var "@r $$;",declare "_FM_F_I(quiet_nan)",exec "$$=r_quiet_nan($1);" "$$";
  452. R_INFINITY:     no_pre,no_post,var "@r $$;",declare "_FM_F(infinity)",exec "$$=r_infinity();" "$$";
  453. MIN_NORMAL:     no_pre,no_post,var "@r $$;",exec "$$=FLTMINNORMAL;" "$$";
  454. MAX_NORMAL:     no_pre,no_post,var "@r $$;",exec "$$=FLTMAXNORMAL;" "$$";
  455. MIN_SUBNORMAL:  no_pre,no_post,var "@r $$;",exec "$$=FLTMINSUBNORMAL;" "$$";
  456. MAX_SUBNORMAL:  no_pre,no_post,var "@r $$;",exec "$$=FLTMAXSUBNORMAL;" "$$";
  457. FLT_STORE_INTO: volatile,no_pre,no_post,var "@r $$;",exec "$$=FLTSTORE($0,$1);" "$$";
  458. FLT_STORE_PREC: volatile,no_pre,no_post,var "@r $$;",exec "$$=FLTSTOREPREC($0,$1,$2);" "$$";
  459. FLT_GET_REP:    no_pre,no_post,exec "rt_flt_get_rep($0,$1,$2,$3);";
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489. -- the following definitions assume that all floating point 
  490. -- operations return NaN if used with wrong arguments (a la IEEE)
  491. -- If this is not the case for some machines, all functions that
  492. -- could break should get a 'fragile'
  493.  
  494. FLTD_PLUS:              no_pre,no_post,var "@r $$;",exec "$$=$0+$1;" "$$";
  495. FLTD_MINUS:             no_pre,no_post,var "@r $$;",exec "$$=$0-$1;" "$$";
  496. FLTD_NEGATE:            no_pre,no_post,var "@r $$;",exec "$$= -$0;" "$$";
  497. FLTD_TIMES:             no_pre,no_post,var "@r $$;",exec "$$=$0*$1;" "$$";
  498. FLTD_DIV:               no_pre,no_post,var "@r $$;",exec "$$=FLTDIV($0,$1);" "$$";
  499. FLTD_IS_EQ:             no_pre,no_post,var "@r $$;",exec "$$=($0)==($1);" "$$";
  500. FLTD_IS_LT:             no_pre,no_post,var "@r $$;",exec "$$=($0)<($1);" "$$";
  501. FLTD_FINITE:            no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=finite($0)!=0;" "$$";
  502. FLTD_ISINF:             no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=isinf($0)!=0;" "$$";
  503. FLTD_ISNORMAL:          no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=isnormal($0)!=0;" "$$";
  504. FLTD_ISSUBNORMAL:       no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=issubnormal($0)!=0;" "$$";
  505. FLTD_ISZERO:            no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=iszero($0)!=0;" "$$";
  506. FLTD_SIGNBIT:           no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=signbit($0);" "$$";
  507. FLTD_ILOGB:             no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=ilogb($0);" "$$";
  508. FLTD_COPYSIGN:          no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=copysign($0);" "$$";
  509. FLTD_NEXTUP:            no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=nextafter($0,1.0d);" "$$";
  510. FLTD_NEXTDOWN:          no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=nextafter($0,-1.0d);" "$$";
  511. FLTD_REMAINDER:         no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=remainder($0);" "$$";
  512. FLTD_FMOD:              no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=fmod($0);" "$$";
  513. FLTD_SCALBN:            no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=scalbn($0);" "$$";
  514. FLTD_J0:                no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=j0($0);" "$$";
  515. FLTD_J1:                no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=j1($0);" "$$";
  516. FLTD_JN:                no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=jn($0);" "$$";
  517. FLTD_Y0:                no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=y0($0);" "$$";
  518. FLTD_Y1:                no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=y1($0);" "$$";
  519. FLTD_YN:                no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=yn($0);" "$$";
  520. FLTD_ERF:               no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=erf($0);" "$$";
  521. FLTD_ERFC:              no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=erfc($0);" "$$";
  522. FLTD_EXP:               no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=exp($0);" "$$";
  523. FLTD_EXPM1:             no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=expm1($0);" "$$";
  524. FLTD_EXP2:              no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=exp2($0);" "$$";
  525. FLTD_EXP10:             no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDEXP10($0);" "$$";
  526. FLTD_LOG:               no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=log($0);" "$$";
  527. FLTD_LOG1P:             no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=log1p($0);" "$$";
  528. FLTD_LOG10:             no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=log10($0);" "$$";
  529. FLTD_POW:               no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=pow($0,$1);" "$$";
  530. FLTD_SINH:              no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=sinh($0);" "$$";
  531. FLTD_COSH:              no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=cosh($0);" "$$";
  532. FLTD_TANH:              no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=tanh($0);" "$$";
  533. FLTD_ASINH:             no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=asinh($0);" "$$";
  534. FLTD_ACOSH:             no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=acosh($0);" "$$";
  535. FLTD_ATANH:             no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=atanh($0);" "$$";
  536. FLTD_HYPOT:             no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=hypot($0);" "$$";
  537. FLTD_SIN:               no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=sin($0);" "$$";
  538. FLTD_COS:               no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=cos($0);" "$$";
  539. FLTD_SINCOS:            no_pre,no_post,declare "#include <math.h>",exec "sincos($0,&$1,&$2);";
  540. FLTD_TAN:               no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=tan($0);" "$$";
  541. FLTD_ASIN:              no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=asin($0);" "$$";
  542. FLTD_ACOS:              no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=acos($0);" "$$";
  543. FLTD_ATAN:              no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=atan($0);" "$$";
  544. FLTD_ATAN2:             no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=atan2($0,$1);" "$$";
  545. FLTD_SINPI:             no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=sinpi($0);" "$$";
  546. FLTD_COSPI:             no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=cospi($0);" "$$";
  547. FLTD_SINCOSPI:          no_pre,no_post,declare "#include <math.h>",exec "sincospi($0,&$1,&$2);";
  548. FLTD_TANPI:             no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=tanpi($0);" "$$";
  549. FLTD_ASINPI:            no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=asinpi($0);" "$$";
  550. FLTD_ACOSPI:            no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=acospi($0);" "$$";
  551. FLTD_ATANPI:            no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=atanpi($0);" "$$";
  552. FLTD_ATAN2PI:           no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=atan2pi($0,$1);" "$$";
  553. FLTD_FABS:              no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=fabs($0);" "$$";
  554. FLTD_LGAMMA:            no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=lgamma($0);" "$$";
  555. FLTD_SQRT:              no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=sqrt($0);" "$$";
  556. FLTD_CBRT:              no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=cbrt($0);" "$$";
  557. FLTD_STORE_INTO:        no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDSTORE($0,$1);" "$$";
  558. FLTD_STORE_INTO_PREC:   no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDSTOREPREC($0,$1,$2);" "$$";
  559. FLTD_ATOF:              no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=atof($1->arr_part);" "$$";
  560. FLTD_INT:               no_pre,no_post,var "@r $$;",exec "$$=(INT)$0;" "$$";
  561. FLTD_FLT:               no_pre,no_post,var "@r $$;",exec "$$=(FLT)$0;" "$$";
  562. FLTD_FLTX:              no_pre,no_post,var "@r $$;",exec "$$=(FLTX)$0;" "$$";
  563. FLTD_FLTDX:             no_pre,no_post,var "@r $$;",exec "$$=(FLTDX)$0;" "$$";
  564. FLTD_TRUNCATE:          no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDTRUNCATE($0);" "$$";
  565. FLTD_FLOOR:             no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=floor($0);" "$$";
  566. FLTD_CEIL:              no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=ceil($0);" "$$";
  567. FLTD_ROUND:             no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDROUND($0);" "$$";
  568. FLTD_PI:                no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_PI;" "$$";
  569. FLTD_E:                 no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_E;" "$$";
  570. FLTD_SQRT_2:            no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_SQRT2;" "$$";
  571. FLTD_LOG_2:             no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_LOG2;" "$$";
  572. FLTD_LOG2_E:            no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_LOG2E;" "$$";
  573. FLTD_LOG10_E:           no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_LOG10E;" "$$";
  574. FLTD_LOG_10:            no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_LN10;" "$$";
  575. FLTD_HALF_PI:           no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_PI_2;" "$$";
  576. FLTD_QUARTER_PI:        no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_PI_4;" "$$";
  577. FLTD_INV_SQRT_2:        no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_SQRT1_2;" "$$";
  578. FLTD_INV_PI:            no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_1_PI;" "$$";
  579. FLTD_DOUBLE_INV_PI:     no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_2_PI;" "$$";
  580. FLTD_DOUBLE_SQRT_PI:    no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=M_2_SQRTPI;" "$$";
  581. FLTD_SIGNALING_NAN:     no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=signaling_nan($1);" "$$";
  582. FLTD_QUIET_NAN:         no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=quiet_nan($1);" "$$";
  583. FLTD_INFINITY:          no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=infinity;" "$$";
  584. FLTD_MIN_NORMAL:        no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDMINNORMAL;" "$$";
  585. FLTD_MAX_NORMAL:        no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDMAXNORMAL;" "$$";
  586. FLTD_MIN_SUBNORMAL:     no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDMINSUBNORMAL;" "$$";
  587. FLTD_MAX_SUBNORMAL:     no_pre,no_post,var "@r $$;",declare "#include <math.h>",exec "$$=FLTDMINSUBNORMAL;" "$$";
  588. FLTD_GET_REP:           no_pre,no_post,exec "rt_fltd_get_rep($0,$1,$2,$3,$4);";
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616. INT_PLUS:       arith,no_pre,no_post,var "@r $$;",exec "$$=INTPLUS($0,$1);" "$$";
  617. INT_MINUS:      arith,no_pre,no_post,var "@r $$;",exec "$$=INTMINUS($0,$1);" "$$";
  618. INT_NEGATE:     arith,no_pre,no_post,var "@r $$;",exec "$$=INTMINUS(0,$0);" "$$";
  619. INT_TIMES:      arith,no_pre,no_post,var "@r $$;",exec "$$=INTTIMES($0,$1);" "$$";
  620. INT_DIV:        fragile,no_pre,no_post,var "@r $$;",exec "$$=INTDIV($0,$1);" "$$";
  621. INT_MOD:        fragile,no_pre,no_post,var "@r $$;",exec "$$=INTMOD($0,$1);" "$$";
  622. INT_IS_EQ:      no_pre,no_post,var "@r $$;",exec "$$=($0)==($1);" "$$";
  623. INT_IS_LT:      no_pre,no_post,var "@r $$;",exec "$$=($0)<($1);" "$$";
  624. INT_BOOL:       no_pre,no_post,var "@r $$;",exec "$$=(BOOL)$0;" "$$";
  625. INT_FLT:        no_pre,no_post,var "@r $$;",exec "$$=(FLT)$0;" "$$";
  626. INT_FLTD:       no_pre,no_post,var "@r $$;",exec "$$=(FLTD)$0;" "$$";
  627. INT_FLTX:       no_pre,no_post,var "@r $$;",exec "$$=(FLT)$0;" "$$";
  628. INT_FLTDX:      no_pre,no_post,var "@r $$;",exec "$$=(FLT)$0;" "$$";
  629. INT_CHAR:       no_pre,no_post,var "@r $$;",exec "$$=(CHAR)$0;" "$$";
  630. INT_C_UNSIGNED_INT:     no_pre,no_post,var "@r $$;",exec "$$=(unsigned int)$0;" "$$";
  631. INT_INT:        no_pre,no_post,exec "$0";
  632. INT_ABS:        no_pre,no_post,var "@r $$;",exec "$$=($0<0)?-$0:$0;" "$$";
  633. INT_SQUARE:     arith,no_pre,no_post,var "@r $$;",exec "$$=INTTIMES($0,$0);" "$$";
  634. INT_MAX:        no_pre,no_post,var "@r $$;",exec "$$=($0>$1)?$0:$1;" "$$";
  635. INT_MIN:        no_pre,no_post,var "@r $$;",exec "$$=($0<$1)?$0:$1;" "$$";
  636. INT_IS_EVEN:    no_pre,no_post,var "@r $$;",exec "$$=($0&1)==0;" "$$";
  637. INT_IS_ODD:     no_pre,no_post,var "@r $$;",exec "$$=($0&1)!=0;" "$$";
  638. INT_IS_BETWEEN: no_pre,no_post,var "@r $$;",exec "$$=($1<=$0&&$0<=$2)||($2<=$0&&$0<=$1);" "$$";
  639. INT_UPLUS:      arith,no_pre,no_post,var "@r $$;",exec "$$=INTUPLUS($0,$1);" "$$";
  640. INT_UMINUS:     arith,no_pre,no_post,var "@r $$;",exec "$$=INTUMINUS($0,$1);" "$$";
  641. INT_UTIMES:     arith,no_pre,no_post,var "@r $$;",exec "$$=INTUTIMES($0,$1);" "$$";
  642. INT_UDIV:       fragile,no_pre,no_post,var "@r $$;",exec "$$=INTUDIV($0,$1);" "$$";
  643. INT_UMOD:       fragile,no_pre,no_post,var "@r $$;",exec "$$=INTUMOD($0,$1);" "$$";
  644. INT_MPLUS:      no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0+(unsigned)$1);" "$$";
  645. INT_MMINUS:     no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0-(unsigned)$1);" "$$";
  646. INT_MNEGATE:    no_pre,no_post,var "@r $$;",exec "$$=(-(unsigned)$0);" "$$";
  647. INT_MTIMES:     no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0*(unsigned)$1);" "$$";
  648. INT_MDIV:       fragile,no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0/(unsigned)$1);" "$$";
  649. INT_MMOD:       fragile,no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0%%(unsigned)$1);" "$$";
  650. INT_BNOT:       no_pre,no_post,var "@r $$;",exec "$$=~$0;" "$$";
  651. INT_BAND:       no_pre,no_post,var "@r $$;",exec "$$=$0&$1;" "$$";
  652. INT_BOR:        no_pre,no_post,var "@r $$;",exec "$$=$0|$1;" "$$";
  653. INT_BXOR:       no_pre,no_post,var "@r $$;",exec "$$=$0\\^$1;" "$$";
  654. INT_LSHIFT:     no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0)<<((unsigned)$1);" "$$";
  655. INT_RSHIFT:     no_pre,no_post,var "@r $$;",exec "$$=INTRSHIFT($0,$1);" "$$";
  656. INT_URSHIFT:    no_pre,no_post,var "@r $$;",exec "$$=((unsigned)$0)>>((unsigned)$1);" "$$";
  657. INT_CREATE_STR: fragile,no_pre,no_post,var "@r $$;",exec "$$=atoi(((STR)$1)->arr_part);" "$$";
  658. INT_AGET:       no_pre,no_post,var "@r $$;",exec "$$=((CHAR)(($0&(1<<$1))!=0));" "$$";
  659. INT_ASET:       no_pre,no_post,var "@r $$;",exec "$$=((($0)&(~(1<<($1))))|(($2)<<($1)));" "$$";
  660. INT_MAXINT:     no_pre,no_post,var "INT $$=SINT_MAX;",exec "$$";
  661. INT_MININT:     no_pre,no_post,var "INT $$=SINT_MIN;",exec "$$";
  662. INT_TIMESB:     no_pre,no_post,
  663.                 break "$0";
  664. INT_TIMESB_INT: no_pre,no_post,
  665.                 break "$0",
  666.                 temp "@r a$$;",
  667.                 iter "a$$=$#;" "a$$";
  668. INT_FORB:       no_pre,no_post,
  669.                 var "INT $$,$$m;",
  670.                 init "$$=$0-1;$$m=$1;",
  671.                 iter "if(($1--)<=0) @@;$$++;" "$$";
  672. INT_UPB:        no_pre,no_post,
  673.                 var "INT $$;",
  674.                 init "$$=$0-1;",
  675.                 iter "$$++;" "$$";
  676. INT_UPTOB:      no_pre,no_post,
  677.                 var "INT $$,$$m;",
  678.                 init "$$=$0-1;$$m=$1;",
  679.                 iter "if($$++>=$$m) @@;" "$$";
  680. INT_DOWNTOB:    no_pre,no_post,
  681.                 var "INT $$,$$m;",
  682.                 init "$$=$0+1;$$m=$1;",
  683.                 iter "if($$--<=$$m) @@;" "$$";
  684.         
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697. -- note: all ACOPY macros are hard coded into
  698. -- the compiler. This was needed especially for pSather to
  699. -- achieve highest performance. However, you should not delete
  700. -- them here, as the compiler still needs some of the information
  701. -- in this file.
  702. STR_ACOPY_FSTR_INT:             no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  703.                                 exec "STRACOPYNF($0,$1,$2);",
  704.                                 f_exec "if(^0&&^1) STRACOPYNF($0,$1,$2); else F_STRACOPYNF($0,$1,$2);";
  705. STR_ACOPY_STR_INT:              no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  706.                                 exec "STRACOPYN($0,$1,$2);",
  707.                                 f_exec "if(^0&&^1) STRACOPYN($0,$1,$2); else F_STRACOPYN($0,$1,$2);";
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719. -- note: all ACOPY macros are hard coded int
  720. -- the compiler. This was needed especially for pSather to
  721. -- achieve highest performance. However, you should not delete
  722. -- them here, as the compiler still needs some of the information
  723. -- in this file.
  724. FSTR_ACOPY_FSTR:                no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  725.                                 exec "FSTRACOPYF($0,$1);",
  726.                                 f_exec "if(^0 && ^1) FSTRACOPYF($0,$1); else F_FSTRACOPYF($0,$1);";
  727. FSTR_ACOPY_STR:                 no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  728.                                 exec "FSTRACOPY($0,$1);",
  729.                                 f_exec "if(^0 && ^1) FSTRACOPY($0,$1); else F_FSTRACOPY($0,$1);";
  730. FSTR_ACOPYN_FSTR_INT:           no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  731.                                 exec "FSTRACOPYNF($0,$1,$2);",
  732.                                 f_exec "if(^0 && ^1) FSTRACOPYNF($0,$1,$2); else F_FSTRACOPYNF($0,$1,$2);";
  733. FSTR_ACOPYN_STR_INT:            no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  734.                                 exec "FSTRACOPYN($0,$1,$2);",
  735.                                 f_exec "if(^0 && ^1) FSTRACOPYN($0,$1,$2); else F_FSTRACOPYN($0,$1,$2);";
  736. FSTR_ACOPY_INT_FSTR:            no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  737.                                 exec "FSTRACOPYIF($0,$1,$2);",
  738.                                 f_exec "if(^0 && ^2) FSTRACOPYIF($0,$1,$2); else F_FSTRACOPYIF($0,$1,$2);";
  739. FSTR_ACOPY_INT_STR:             no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  740.                                 exec "FSTRACOPYIS($0,$1,$2);",
  741.                                 f_exec "if(^0 && ^2) FSTRACOPYIS($0,$1,$2); else F_FSTRACOPYIS($0,$1,$2);";
  742. FSTR_MEMCMP_FSTR_INT:           no_pre,no_post,reads "@0::asize" "@0::loc" "@0::[]",var "@r $$;",
  743.                                 exec "$$=STRISEQHELPER($0,$1,$2);" "$$",
  744.                                 f_exec "$$=(^0&&^1)?STRISEQHELPER($0,$1,$2):F_STRISEQHELPER(@0,$0,@1,$1,$2);" "$$";
  745. FSTR_MEMCMP_STR_INT:            no_pre,no_post,reads "@0::asize" "@0::loc" "@0::[]",var "@r $$;",
  746.                                 exec "$$=STRISEQHELPER($0,$1,$2);" "$$",
  747.                                 f_exec "$$=(^0&&^1)?STRISEQHELPER($0,$1,$2):F_STRISEQHELPER(@0,$0,@1,$1,$2);" "$$";
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761. ARRAY_SIZE:                     no_pre,no_post,reads "@0::asize",var "@r $$;",
  762.                                 exec "$$=($0)==NULL?0:ASIZE(@(0)$0);" "$$",
  763.                                 f_exec "$$=FVOID($0)?0:^0?ASIZE(@(0)$0):F_ASIZE(@0,$0);" "$$";
  764. ARRAY_CLEAR:                    no_pre,no_post,writes "@0::[],@0::asize",
  765.                                 exec "if($0!=NULL) AREFACLEAR($0);",
  766.                                 f_exec "if(!FVOID($0)) { if(^0) AREFACLEAR($0); else F_AREFACLEAR_A(@0,$0); }";
  767. ARRAY_COPY:                     no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  768.                                 exec "if($0!=NULL && $1!=NULL) AREFACOPY($0,$1);",
  769.                                 f_exec "if(!FVOID($0) && !FVOID($1)) { if(^0 && ^1) AREFACOPY($0,$1); else F_AREFACOPY_AA(@0,@P0,$0,$1); }";
  770. ARRAY_COPY_BEG:                 no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  771.                                 exec "if($2!=NULL) AREFACOPYB($0,$1,$2);",
  772.                                 f_exec "if(!FVOID($2)) { if(^0 && ^1) AREFACOPYB($0,$1,$2); else F_AREFACOPYB_AA(@0,@P0,$0,$1,$2); }";
  773. ARRAY_COPY_BEG_NUM:             no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  774.                                 exec "AREFACOPYBN($0,$1,$2,$3);",
  775.                                 f_exec "if(^0 && ^1) AREFACOPYBN($0,$1,$2,$3); else F_AREFACOPYBN_AA(@0,@P0,$0,$1,$2,$3);";
  776. ARRAY_COPY_BEG_NUM_SRCBEG:      no_pre,no_post,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
  777.                                 exec "AREFACOPYBNS($0,$1,$2,$3,$4);",
  778.                                 f_exec "F_AREFACOPYBNS_AA(@0,@P0,$0,$1,$2,$3,$4);";
  779.  
  780. ARRAY_ELTB:                     reads   "@0::[]" "@0::asize",
  781.                                 attr_access 1,
  782.                                 var     "INT $$br;",
  783.                                 init    "$$br=$0==NULL?0:ASIZE(@(0)$0);",
  784.                                 break   "$$br",
  785.                                 temp    "@r a$$;",
  786.                                 iter    "a$$=ARR(@(0)$0,$#);" "a$$",
  787.                                 f_init  "$$br=FVOID($0)?0:^0?ASIZE(@(0)$0):F_ASIZE(@0,$0);",
  788.                                 f_iter  "#if %r==0" "if(^0) a$$=ARR(@(0)$0,$#); else F_R_RARR_NA(a$$,@0,$0,$#);" 
  789.                                         "#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$#); else F_VA_RARR_NA(a$$,@0,$0,$#);" 
  790.                                         "#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);" 
  791.                                         "#endif"
  792.                                         "a$$";
  793. ARRAY_ELT_BEGB:                 reads   "@0::[]" "@0::asize",
  794.                                 var     "INT $$c,$$s;",
  795.                                 attr_access 1,
  796.                                 temp    "@r a$$;",
  797.                                 init    "$$c=$1-1;$$s=$0==0?0:ASIZE(@(0)$0);",
  798.                                 f_init  "$$c=$1-1;$$s=FVOID($0)?0:^0?ASIZE(@(0)$0):F_ASIZE(@0,$0);",
  799.                                 iter    "if(++$$c>=$$s) @@;"
  800.                                         "a$$=ARR(@(0)$0,$$c);" "a$$",
  801.                                 f_iter  "if(++$$c>=$$s) @@;"
  802.                                         "#if %r==0" "if(^0) a$$=ARR(@(0)$0,$$c); else F_R_RARR_NA(a$$,@0,$0,$$c);" 
  803.                                         "#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$$c); else F_VA_RARR_NA(a$$,@0,$0,$$c);" 
  804.                                         "#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);" 
  805.                                         "#endif"
  806.                                         "a$$";
  807. ARRAY_ELT_BEG_NUMB:             reads   "@0::[]" "@0::asize",
  808.                                 var     "INT $$c,$$m;",
  809.                                 temp    "@r a$$;",
  810.                                 attr_access 1,
  811.                                 init    "$$c=$1-1;$$m=$1+$2;",
  812.                                 iter    "if(++$$c>=$$m) @@;"
  813.                                         "a$$=ARR(@(0)$0,$$c);" "a$$",
  814.                                 f_iter  "if(++$$c>=$$m) @@;"
  815.                                         "#if %r==0" "if(^0) a$$=ARR(@(0)$0,$$c); else F_R_RARR_NA(a$$,@0,$0,$$c);" 
  816.                                         "#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$$c); else F_VA_RARR_NA(a$$,@0,$0,$$c);" 
  817.                                         "#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);" 
  818.                                         "#endif" 
  819.                                         "a$$";
  820. ARRAY_ELT_BEG_NUM_STEPB:        reads   "@0::[]" "@0::asize",
  821.                                 var     "INT $$c,$$m;",
  822.                                 attr_access 1,
  823.                                 temp    "@r a$$;",
  824.                                 init    "$$c=$1;$$m=$1+$2*$3;",
  825.                                 iter    "if($3>=0&&$$c>=$$m||$3<0&&$$c<=$$m)@@;"
  826.                                         "a$$=ARR(@(0)$0,$$c);" "$$c+=$3;" "a$$",
  827.                                 f_iter  "if($$c>=$$m) @@;"
  828.                                         "#if %r==0" "if(^0) a$$=ARR(@(0)$0,$$c); else F_R_RARR_NA(a$$,@0,$0,$$c);" 
  829.                                         "#elif %r==1" "if(^0) a$$=ARR(@(0)$0,$$c); else F_VA_RARR_NA(a$$,@0,$0,$$c);" 
  830.                                         "#elif %r==2" "if(^0) VASS_LP(a$$,@r,ARR(@(0)$0,$#)); else F_V_RARR_LP(@r,a$$,@0,$0,$#);" 
  831.                                         "#endif" 
  832.                                         "$$c+=$3;" "a$$";
  833. ARRAY_SETB:                     writes  "@0::[]",
  834.                                 attr_access 1,
  835.                                 reads   "@0::asize",
  836.                                 var     "INT $$br;",
  837.                                 init    "$$br=$0==NULL?0:ASIZE(@(0)$0);",
  838.                                 f_init  "$$br=FVOID($0)?0:^0?ASIZE(@(0)$0):F_ASIZE(@0,$0);",
  839.                                 break   "$$br",
  840.                                 iter    "SARR(@(0)$0,$#,@(1)$1);",
  841.                                 f_iter  "#if %1==0" "if(^0) SARR(@(0)$0,$#,@(1)$1); else F_R_WARR_NA(@0,$0,$#,$1);" 
  842.                                         "#elif %1==1" "if(^0) SARR(@(0)$0,$#,@(1)$1); else F_VA_WARR_NA(@0,$0,$#,$1);" 
  843.                                         "#elif %1==2" "if(^0) { CHK_BOUNDS($#,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$#],@1,$1);} else F_V_WARR_LP(@0,$0,$#,@1,$1);" 
  844.                                         "#endif";
  845. ARRAY_SET_BEGB:                 writes  "@0::[]",
  846.                                 attr_access 1,
  847.                                 reads   "@0::asize",
  848.                                 var     "INT $$c,$$s;",
  849.                                 init    "$$c=$1-1;$$s=$0==NULL?0:ASIZE(@(0)$0);",
  850.                                 f_init  "$$c=$1-1;$$s=FVOID($0)?0:^0?ASIZE(@(0)$0):F_ASIZE(@0,$0);",
  851.                                 iter    "if(++$$c>=$$s) @@;"
  852.                                         "SARR(@(0)$0,$$c,@(2)$2);",
  853.                                 f_iter  "if(++$$c>=$$s) @@;"
  854.                                         "#if %2==0" "if(^0) SARR(@(0)$0,$$c,@(2)$2); else F_R_WARR_NA(@0,$0,$$c,$2);" 
  855.                                         "#elif %2==1" "if(^0) SARR(@(0)$0,$$c,@(2)$2); else F_VA_WARR_NA(@0,$0,$$c,$2);" 
  856.                                         "#elif %2==2" "if(^0) { CHK_BOUNDS($$c,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$$c],@2,$2);} else F_V_WARR_LP(@0,$0,$$c,@2,$2);" 
  857.                                         "#endif";
  858. ARRAY_SET_BEG_NUMB:             writes  "@0::[]",
  859.                                 attr_access 1,
  860.                                 reads   "@0::asize",
  861.                                 var     "INT $$c,$$m;",
  862.                                 init    "$$c=$1-1;$$m=$1+$2;",
  863.                                 iter    "if(++$$c>=$$m) @@;"
  864.                                         "SARR(@(0)$0,$$c,@(3)$3);",
  865.                                 f_iter  "if(++$$c>=$$m) @@;"
  866.                                         "#if %3==0" "if(^0) SARR(@(0)$0,$$c,@(1)$3); else F_R_WARR_NA(@0,$0,$$c,$3);" 
  867.                                         "#elif %3==1" "if(^0) SARR(@(0)$0,$$c,@(1)$3); else F_VA_WARR_NA(@0,$0,$$c,$3);" 
  868.                                         "#elif %3==2" "if(^0) { CHK_BOUNDS($$c,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$$c],@3,$3);} else F_V_WARR_LP(@0,$0,$$c,@3,$3);" 
  869.                                         "#endif";
  870. ARRAY_SET_BEG_NUM_STEPB:        reads   "@0::[]",
  871.                                 attr_access 1,
  872.                                 writes  "@0::asize",
  873.                                 var     "INT $$c,$$m;",
  874.                                 init    "$$c=$1;$$m=$1+$2*$3;",
  875.                                 iter    "if($3>=0&&$$c>=$$m||$3<0&&$$c<=$$m)@@;"
  876.                                         "SARR(@(0)$0,$$c,@(4)$4);" "$$c+=$3;",
  877.                                 f_iter  "if($$c>=$$m) @@;"
  878.                                         "#if %4==0" "if(^0) SARR(@(0)$0,$$c,@(1)$4); else F_R_WARR_NA(@0,$0,$$c,$4);" 
  879.                                         "#elif %4==1" "if(^0) SARR(@(0)$0,$$c,@(1)$4); else F_VA_WARR_NA(@0,$0,$$c,$4);" 
  880.                                         "#elif %4==2" "if(^0) { CHK_BOUNDS($$c,0,ASIZE($0)-1,0);VASS_PP((@(0)$0)->arr_part[$$c],@4,$4);} else F_V_WARR_LP(@0,$0,$$c,@4,$4);" 
  881.                                         "#endif" 
  882.                                         "$$c+=$3;";
  883. ARRAY_INDB:                     reads   "@0::asize",
  884.                                 var     "INT $$br;",
  885.                                 init    "$$br=$0==NULL?0:ASIZE(@(0)$0);",
  886.                                 f_init  "$$br=FVOID($0)?0:^0?ASIZE(@(0)$0):F_ASIZE(@0,$0);",
  887.                                 break   "$$br",
  888.                                 temp    "@r r$$;",
  889.                                 iter    "r$$=$#;" "r$$";
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918. FILE_STDIN:     no_pre,no_post,declare "#include <stdio.h>",exec "stdin";
  919. FILE_STDOUT:    no_pre,no_post,declare "#include <stdio.h>",exec "stdout";
  920. FILE_STDERR:    no_pre,no_post,declare "#include <stdio.h>",exec "stderr";
  921. FILE_CLEAR:     volatile,no_pre,no_post,declare "#include <stdio.h>",exec "clearerr((FILE *)$0);";
  922. FILE_FWRITE_FSTR: volatile,no_pre,no_post,declare "#include <stdio.h>",var "@r $$;",exec "$$=fwrite(((@1)$1)->arr_part,$2,1,$3);" "$$",
  923.                   f_exec "$$=p_fwrite(((@1)$1)->arr_part,$2,1,$3);" "$$";
  924. FILE_FWRITE_STR:  volatile,no_pre,no_post,declare "#include <stdio.h>",var "@r $$;",exec "$$=fwrite(((@1)$1)->arr_part,$2,1,$3);" "$$",
  925.                   f_exec "$$=p_fwrite(((@1)$1)->arr_part,$2,1,$3);" "$$";
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949. IN_GETCHAR:     volatile,no_pre,no_post,var "@r $$;",declare "#include <stdio.h>",exec "$$=(INT)getchar();" "$$";
  950. IN_GET_STR_SIZED: volatile,no_pre,no_post,declare "#include <stdio.h>",exec "INGETSTRSIZED(((@1)$1),$2);";
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978. SYS_DESTROY:    volatile,no_pre,no_post,
  979.                 exec "SYSDESTROY($1);",
  980.                 f_exec "if(^0) SYSDESTROY($1); else F_SYSDESTROY($1);";
  981. SYS_ID:         no_pre,no_post,var "@r $$;",
  982.                 exec "$$=SYSID($1);" "$$",
  983.                 f_exec "$$=^0?SYSID($1):F_SYSID($1);" "$$";
  984. SYS_TP:         no_pre,no_post,var "@r $$;",
  985.                 exec "$$=SYSTP($1);" "$$",
  986.                 f_exec "$$=^0?SYSTP($1):F_SYSTP($1);" "$$";
  987. SYS_STR_FOR_TP: no_pre,no_post,var "@r $$;",
  988.                 exec "$$=SYSSTRFORTP($1);" "$$";
  989. SYS_EXT_OB_FOR: no_pre,no_post,var "@r $$;",
  990.                 exec "$$=SYSEXTOBFOR($1);" "$$";
  991. SYS_OB_EQ:      no_pre,no_post,var "@r $$;",
  992.                 exec "$$=SYSOBEQ($1);" "$$",
  993.                 f_exec "$$=(^0&&^1)?SYSOBEQ($1):F_SYSOBEQ($1);" "$$";
  994. SYS_IMPORT:     import,no_pre,no_post, exec "SYS_IMPORT;";
  995. SYS_EXPORT:     export,no_pre,no_post,exec "SYS_EXPORT;";
  996. SYS_DEFER:      no_pre,no_post,exec "SYS_DEFER;";
  997. SYS_PSATHER_STATISTICS: exec "use_statistics((int)$1);";
  998. SYS_PSATHER_TRACE:      exec "use_trace((int)$1);";
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026. TIME_SECONDS:   volatile,no_pre,no_post,var "@r $$;",exec "$$=(FLTD)time(NULL);" "$$";
  1027.  
  1028. TIMES_NOW:      volatile,no_pre,no_post,declare "#include <sys/times.h>" "#include <limits.h>",
  1029.                 var "struct tms $$;",
  1030.                 exec "$0->$.wall_time=times(&$$);"
  1031.                      "$0->$.sys_time=$$.tms_stime;"
  1032.                      "$0->$.user_time=$$.tms_utime;"
  1033.                      "$0->$.child_sys_time=$$.tms_cstime;"
  1034.                      "$0->$.child_user_time=$$.tms_cutime;";
  1035. TIMES_CLK:      no_pre,no_post,var "@r $$;",exec "$$=CLK_TCK;",declare "#include <limits.h>";
  1036.  
  1037. MEMORY_NOW:     no_pre,no_post,exec "$0->$.sbrk_size=(long)sbrk(0);"
  1038.                         "$0->$.gc_size=(long)GC_get_heap_size();";
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062. -- most of the functions and macros used in this file are defined
  1063. -- in am.h, the rest in pSather.h
  1064. THREAD_ID_NIL:                  no_pre,no_post,var "@r $$;",exec "$$=thr_no_thread();" "$$";
  1065. THREAD_ID_ME:                   no_pre,no_post,var "@r $$;",exec "$$=thr_ps_id();" "$$";
  1066. THREAD_ID_IS_EQ:                no_pre,no_post,var "@r $$;",exec "$$=THR_SAME_ID($0,$1);" "$$";
  1067. THREAD_ID_IS_LT:                no_pre,no_post,var "@r $$;",exec "$$=THR_LT($0,$1);" "$$";
  1068. THREAD_ID_HASH:                 no_pre,no_post,var "@r $$;",exec "$$=THR_HASH($0);" "$$";
  1069. THREAD_ID_STR:                  no_pre,no_post,var "@r $$;char $$p[30];",
  1070.                                    exec "thr_print_id($0,$$p);"
  1071.                                         "$$=(@r)rt_arr_alloc(sizeof(struct STR_struct),STR_tag,sizeof(CHAR),strlen($$p)+1);"
  1072.                                         "$$->asize=strlen($$p);"
  1073.                                         "strcpy($$->arr_part,$$p);"
  1074.                                         "$$";
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086. -- most of the functions and macros used in this file are defined
  1087. -- in am.h, the rest in pSather.h
  1088. TIMING_TIME:    no_pre,no_post,
  1089.                 declare "int gettimeofday(struct timeval *,void *);"
  1090.                         "extern int start_sec;",
  1091.                 var "struct timeval $$now;",
  1092.                 exec "gettimeofday(&$$now,NULL);"
  1093.                      "*$1=$$now.tv_sec-start_sec;"
  1094.                      "*$2=$$now.tv_usec;";
  1095. TIMING_SLEEP:   volatile,exec "sleep($1);";
  1096.  
  1097.  
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124. -- most of the functions and macros used in this file are defined
  1125. -- in am.h, the rest in pSather.h
  1126. LL_LOCK_INIT:                   no_pre,no_post,volatile,exec "$0->lck=LCK_CREATE;";
  1127. LL_LOCK_L_LCK:                  no_pre,no_post,volatile,exec "LCK_LOCK($0->lck);";
  1128. LL_LOCK_L_UNLCK:                no_pre,no_post,volatile,exec "LCK_UNLOCK($0->lck);";
  1129. LL_LOCK_L_TRY:                  no_pre,no_post,volatile,var "@r $$;",exec "$$=LCK_TRY($0->lck);" "$$";
  1130. LL_LOCK_LCK:                    no_pre,no_post,volatile,exec "ll_lock_lck_remote($0);";
  1131. LL_LOCK_UNLCK:                  no_pre,no_post,volatile,exec "ll_lock_unlck_remote($0);";
  1132. LL_LOCK_TRY:                    no_pre,no_post,volatile,var "@r $$;",exec "$$=ll_lock_try_remote($0);" "$$";
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161. -- most of the functions and macros used in this file are defined
  1162. -- in am.h, the rest in pSather.h
  1163. SPINLOCK_INIT:                  no_pre,no_post,volatile,exec "SPINLOCK_CREATE($0);";
  1164. SPINLOCK_L_LCK:                 no_pre,no_post,volatile,exec "SPINLOCK_LCK($0);";
  1165. SPINLOCK_L_UNLCK:               no_pre,no_post,volatile,exec "SPINLOCK_UNLCK($0);";
  1166. SPINLOCK_L_TRY:                 no_pre,no_post,volatile,var "@r $$;",exec "$$=SPINLOCK_TRY($0);" "$$";
  1167. SPINLOCK_LCK:                   no_pre,no_post,volatile,exec "spinlock_lck_remote($0);";
  1168. SPINLOCK_UNLCK:                 no_pre,no_post,volatile,exec "spinlock_unlck_remote($0);";
  1169. SPINLOCK_TRY:                   no_pre,no_post,volatile,var "@r $$;",exec "$$=spinlock_try_remote($0);" "$$";
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193. F_INTEGER_CREATE_INT:   no_pre,no_post,exec             "INTF_INTEGER($1)"; 
  1194. F_INTEGER_INT:          no_pre,no_post,exec             "F_INTEGERINT($0)";
  1195. F_INTEGER_ZERO:         no_pre,no_post,exec             "F_INTEGER_zero";
  1196. F_INTEGER_PLUS:         arith,no_pre,no_post,var "@r $$;", exec "$$=F_INTEGERPLUS($0,$1);" "$$";
  1197. F_INTEGER_MINUS:        arith,no_pre,no_post,var "@r $$;", exec "$$=F_INTEGERMINUS($0,$1);" "$$";
  1198. F_INTEGER_TIMES:        arith,no_pre,no_post,var "@r $$;", exec "$$=F_INTEGERTIMES($0,$1);" "$$";
  1199. F_INTEGER_DIV:          arith,no_pre,no_post,var "@r $$;", exec "$$=F_INTEGERDIV($0,$1);" "$$";
  1200. F_INTEGER_IS_EQ:        no_pre,no_post,var "@r $$;",exec        "$$=F_INTEGER_IS_EQ($0,$1);" "$$";
  1201. F_INTEGER_IS_LT:        no_pre,no_post,var "@r $$;",exec        "$$=F_INTEGERIS_LT($0,$1);" "$$";
  1202.  
  1203. F_REAL_CREATE_FLT:      no_pre,no_post,exec             "FLTF_REAL($1)";
  1204. F_REAL_FLT:             no_pre,no_post,exec             "F_REALFLT($0)";
  1205. F_REAL_ZERO:            no_pre,no_post,exec             "F_REAL_zero";
  1206. F_REAL_PLUS:            arith,no_pre,no_post,var "@r $$;",exec  "$$=F_REALPLUS($0,$1);" "$$";
  1207. F_REAL_MINUS:           arith,no_pre,no_post,var "@r $$;",exec  "$$=F_REALMINUS($0,$1);" "$$";
  1208. F_REAL_TIMES:           arith,no_pre,no_post,var "@r $$;",exec  "$$=F_REALTIMES($0,$1);" "$$";
  1209. F_REAL_DIV:             arith,no_pre,no_post,var "@r $$;",exec  "$$=F_REALDIV($0,$1);" "$$";
  1210. F_REAL_IS_EQ:           no_pre,no_post,var "@r $$;",exec        "$$=F_REAL_IS_EQ($0,$1);" "$$";
  1211. F_REAL_IS_LT:           no_pre,no_post,var "@r $$;",exec        "$$=F_REALIS_LT($0,$1);" "$$";
  1212.  
  1213.  
  1214. F_DOUBLE_CREATE_FLTD:   no_pre,no_post,exec             "FLTDF_DOUBLE($1)";
  1215. F_DOUBLE_FLTD:          no_pre,no_post,exec             "F_DOUBLEFLTD($0)";
  1216. F_DOUBLE_ZERO:          no_pre,no_post,exec             "F_DOUBLE_zero";
  1217. F_DOUBLE_PLUS:          arith,no_pre,no_post,var "@r $$;",exec "$$=F_DOUBLEPLUS($0,$1);" "$$";
  1218. F_DOUBLE_MINUS:         arith,no_pre,no_post,var "@r $$;",exec "$$=F_DOUBLEMINUS($0,$1);" "$$";
  1219. F_DOUBLE_TIMES:         arith,no_pre,no_post,var "@r $$;",exec "$$=F_DOUBLETIMES($0,$1);" "$$";
  1220. F_DOUBLE_DIV:           arith,no_pre,no_post,var "@r $$;",exec "$$=F_DOUBLEDIV($0,$1);" "$$";
  1221. F_DOUBLE_IS_EQ:         no_pre,no_post,var "@r $$;",exec        "$$=F_DOUBLE_IS_EQ($0,$1);" "$$";
  1222. F_DOUBLE_IS_LT:         no_pre,no_post,var "@r $$;",exec        "$$=F_DOUBLEIS_LT($0,$1);" "$$";
  1223.  
  1224.  
  1225. F_LOGICAL_CREATE_BOOL:  no_pre,no_post,exec             "BOOLF_LOGICAL($1)";
  1226. F_LOGICAL_BOOL:         no_pre,no_post,exec             "F_LOGICALBOOL($0)";
  1227. F_LOGICAL_ZERO:         no_pre,no_post,exec             "F_LOGICAL_zero";
  1228. F_LOGICAL_NOT:          no_pre,no_post,var "@r $$;",exec        "$$=F_LOGICALNOT($0);" "$$";
  1229. F_LOGICAL_IS_EQ:        no_pre,no_post,var "@r $$;",exec        "$$=F_LOGICAL_IS_EQ($0,$1);" "$$";
  1230. F_LOGICAL_OR:           no_pre,no_post,var "@r $$;",exec        "$$=F_LOGICALOR($0,$1);" "$$";
  1231. F_LOGICAL_AND:          no_pre,no_post,var "@r $$;",exec        "$$=F_LOGICALAND($0,$1);" "$$";
  1232.  
  1233.  
  1234. F_CHARACTER_CREATE_CHAR: no_pre,no_post,exec    "CHARF_CHARACTER($1)";
  1235. F_CHARACTER_CHAR:       no_pre,no_post,exec             "F_CHARACTERCHAR($0)";
  1236. F_CHARACTER_ZERO:       no_pre,no_post,exec             "F_CHARACTER_zero";
  1237. F_CHARACTER_IS_EQ:      no_pre,no_post,var "@r $$;",exec        "$$=F_CHARACTER_IS_EQ($0,$1);" "$$";
  1238. F_CHARACTER_IS_LT:      no_pre,no_post,var "@r $$;",exec        "$$=F_CHARACTERIS_LT($0,$1);" "$$";
  1239.  
  1240.  
  1241.  
  1242. F_STRING_CREATE_CHAR: no_pre,no_post,var "@r $$;",
  1243.                         exec    
  1244.                         "$$=(@0)ZALLOC(sizeof(@0_struct));" 
  1245.                         "$$->address=(F_CHARACTER *)ZALLOC(sizeof(F_CHARACTER));"
  1246.                         "$$->size=(F_LENGTH)1;"
  1247.                         "*($$->address)=(F_CHARACTER)$1;"
  1248.                         "$$";
  1249. F_STRING_CREATE_STR:  no_pre,no_post, reads "@1::asize",
  1250.                         var "@r $$;",
  1251.                         exec    
  1252.                         "$$=(@0)ZALLOC(sizeof(@0_struct));" 
  1253.                         "$$->address=(F_CHARACTER *)ZALLOC($1->asize);"
  1254.                         "$$->size=(F_LENGTH)$1->asize;"
  1255.                         "memcpy($$->address,$1->arr_part,$1->asize);"
  1256.                         "$$";
  1257. F_STRING_CREATE_INT:  no_pre,no_post, reads "@1::asize",
  1258.                         var "@r $$;",
  1259.                         exec    
  1260.                         "$$=(@0)ZALLOC(sizeof(@0_struct));" 
  1261.                         "$$->address=(F_CHARACTER *)ZALLOC($1);"
  1262.                         "$$->size=(F_LENGTH)$1;"
  1263.                         "$$";
  1264.  
  1265. F_STRING_ADDRESS: no_pre,no_post, exec "$0->address";
  1266. F_STRING_SIZE:    no_pre,no_post, exec "$0->size";
  1267.  
  1268. F_COMPLEX_READ_RE:       no_pre,no_post, exec "$0.re";
  1269. F_COMPLEX_WRITE_RE:      no_pre,no_post, exec "$0.re=$1;";
  1270. F_COMPLEX_READ_IM:       no_pre,no_post, exec "$0.im";
  1271. F_COMPLEX_WRITE_IM:      no_pre,no_post, exec "$0.im=$1;";
  1272. F_COMPLEX_ZERO:          no_pre,no_post,exec "F_COMPLEX_zero";
  1273.  
  1274. F_DOUBLE_COMPLEX_READ_RE:        no_pre,no_post, exec "$0.re";
  1275. F_DOUBLE_COMPLEX_WRITE_RE:       no_pre,no_post, exec "$0.re=$1;";
  1276. F_DOUBLE_COMPLEX_READ_IM:        no_pre,no_post, exec "$0.im";
  1277. F_DOUBLE_COMPLEX_WRITE_IM:       no_pre,no_post, exec "$0.im=$1;";
  1278. F_DOUBLE_COMPLEX_ZERO:           no_pre,no_post,exec "F_DOUBLE_COMPLEX_zero";
  1279.  
  1280. F_HANDLER_SET_HANDLER:  no_pre,no_post, exec "$0=(@0)$1;";
  1281. F_HANDLER_INVOKE_HANDLER: no_pre,no_post, exec "F_HANDLERINVOKE_HANDLER($0)";
  1282.  
  1283.  
  1284. -- FORTRAN arrays
  1285. F_ARRAY_CREATE_INT:       no_pre,no_post, exec "(@0)ZALLOC($1*sizeof(@P0))";
  1286. F_ARRAY_CREATE_ARRAY:     no_pre,no_post, exec "(@0)$1->arr_part";
  1287.  
  1288. F_ARRAY2_CREATE_INT_INT:  no_pre,no_post, exec "(@0)ZALLOC($1*$2*sizeof(@P0))";
  1289. F_ARRAY2_CREATE_ARRAY2:   no_pre,no_post, exec "(@0)$1->arr_part";
  1290.  
  1291. F_ARRAY3_CREATE_INT_INT_INT: no_pre,no_post, exec "(@0)ZALLOC($1*$2*$3*sizeof(@P0))";
  1292. F_ARRAY3_CREATE_ARRAY3:   no_pre,no_post, exec "(@0)$1->arr_part";
  1293.  
  1294. F_ARRAY2_CREATE_MAT:    no_pre,no_post, exec "(@0)$1->arr_part";
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325. C_CHAR_CREATE_CHAR:     no_pre,no_post,exec             "CHARC_CHAR($1)"; 
  1326. C_CHAR_CHAR:            no_pre,no_post,exec             "C_CHARCHAR($0)";
  1327. C_CHAR_ZERO:            no_pre,no_post,exec             "C_CHAR_zero";
  1328. C_CHAR_PLUS:            arith,no_pre,no_post,var "@r $$;", exec "$$=C_CHARPLUS($0,$1);" "$$";
  1329. C_CHAR_MINUS:           arith,no_pre,no_post,var "@r $$;", exec "$$=C_CHARMINUS($0,$1);" "$$";
  1330. C_CHAR_TIMES:           arith,no_pre,no_post,var "@r $$;", exec "$$=C_CHARTIMES($0,$1);" "$$";
  1331. C_CHAR_DIV:             arith,no_pre,no_post,var "@r $$;", exec "$$=C_CHARDIV($0,$1);" "$$";
  1332. C_CHAR_IS_EQ:           no_pre,no_post,var "@r $$;",exec        "$$=C_CHAR_IS_EQ($0,$1);" "$$";
  1333. C_CHAR_IS_LT:           no_pre,no_post,var "@r $$;",exec        "$$=C_CHARIS_LT($0,$1);" "$$";
  1334.  
  1335. C_UNSIGNED_CHAR_CREATE_CHAR:    no_pre,no_post,exec             "CHARC_UNSIGNED_CHAR($1)"; 
  1336. C_UNSIGNED_CHAR_CHAR:           no_pre,no_post,exec             "C_UNSIGNED_CHARCHAR($0)";
  1337. C_UNSIGNED_CHAR_ZERO:           no_pre,no_post,exec             "C_UNSIGNED_CHAR_zero";
  1338. C_UNSIGNED_CHAR_PLUS:           arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_CHARPLUS($0,$1);" "$$";
  1339. C_UNSIGNED_CHAR_MINUS:          arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_CHARMINUS($0,$1);" "$$";
  1340. C_UNSIGNED_CHAR_TIMES:          arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_CHARTIMES($0,$1);" "$$";
  1341. C_UNSIGNED_CHAR_DIV:            arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_CHARDIV($0,$1);" "$$";
  1342. C_UNSIGNED_CHAR_IS_EQ:          no_pre,no_post,var "@r $$;",exec        "$$=C_UNSIGNED_CHAR_IS_EQ($0,$1);" "$$";
  1343. C_UNSIGNED_CHAR_IS_LT:          no_pre,no_post,var "@r $$;",exec        "$$=C_UNSIGNED_CHARIS_LT($0,$1);" "$$";
  1344.  
  1345. C_SIGNED_CHAR_CREATE_CHAR:      no_pre,no_post,exec             "CHARC_SIGNED_CHAR($1)"; 
  1346. C_SIGNED_CHAR_CHAR:             no_pre,no_post,exec             "C_SIGNED_CHARCHAR($0)";
  1347. C_SIGNED_CHAR_ZERO:             no_pre,no_post,exec             "C_SIGNED_CHAR_zero";
  1348. C_SIGNED_CHAR_PLUS:             arith,no_pre,no_post,var "@r $$;", exec "$$=C_SIGNED_CHARPLUS($0,$1);" "$$";
  1349. C_SIGNED_CHAR_MINUS:            arith,no_pre,no_post,var "@r $$;", exec "$$=C_SIGNED_CHARMINUS($0,$1);" "$$";
  1350. C_SIGNED_CHAR_TIMES:            arith,no_pre,no_post,var "@r $$;", exec "$$=C_SIGNED_CHARTIMES($0,$1);" "$$";
  1351. C_SIGNED_CHAR_DIV:              arith,no_pre,no_post,var "@r $$;", exec "$$=C_SIGNED_CHARDIV($0,$1);" "$$";
  1352. C_SIGNED_CHAR_IS_EQ:            no_pre,no_post,var "@r $$;",exec        "$$=C_SIGNED_CHAR_IS_EQ($0,$1);" "$$";
  1353. C_SIGNED_CHAR_IS_LT:            no_pre,no_post,var "@r $$;",exec        "$$=C_SIGNED_CHARIS_LT($0,$1);" "$$";
  1354.  
  1355. C_SHORT_CREATE_INT:     no_pre,no_post,exec             "INTC_SHORT($1)"; 
  1356. C_SHORT_INT:            no_pre,no_post,exec             "C_SHORTINT($0)";
  1357. C_SHORT_ZERO:           no_pre,no_post,exec             "C_SHORT_zero";
  1358. C_SHORT_PLUS:           arith,no_pre,no_post,var "@r $$;", exec "$$=C_SHORTPLUS($0,$1);" "$$";
  1359. C_SHORT_MINUS:          arith,no_pre,no_post,var "@r $$;", exec "$$=C_SHORTMINUS($0,$1);" "$$";
  1360. C_SHORT_TIMES:          arith,no_pre,no_post,var "@r $$;", exec "$$=C_SHORTTIMES($0,$1);" "$$";
  1361. C_SHORT_DIV:            arith,no_pre,no_post,var "@r $$;", exec "$$=C_SHORTDIV($0,$1);" "$$";
  1362. C_SHORT_IS_EQ:          no_pre,no_post,var "@r $$;",exec        "$$=C_SHORT_IS_EQ($0,$1);" "$$";
  1363. C_SHORT_IS_LT:          no_pre,no_post,var "@r $$;",exec        "$$=C_SHORTIS_LT($0,$1);" "$$";
  1364.  
  1365. C_INT_CREATE_INT:       no_pre,no_post,exec             "INTC_INT($1)"; 
  1366. C_INT_INT:              no_pre,no_post,exec             "C_INTINT($0)";
  1367. C_INT_ZERO:             no_pre,no_post,exec             "C_INT_zero";
  1368. C_INT_PLUS:             arith,no_pre,no_post,var "@r $$;", exec "$$=C_INTPLUS($0,$1);" "$$";
  1369. C_INT_MINUS:            arith,no_pre,no_post,var "@r $$;", exec "$$=C_INTMINUS($0,$1);" "$$";
  1370. C_INT_TIMES:            arith,no_pre,no_post,var "@r $$;", exec "$$=C_INTTIMES($0,$1);" "$$";
  1371. C_INT_DIV:              arith,no_pre,no_post,var "@r $$;", exec "$$=C_INTDIV($0,$1);" "$$";
  1372. C_INT_IS_EQ:            no_pre,no_post,var "@r $$;",exec        "$$=C_INT_IS_EQ($0,$1);" "$$";
  1373. C_INT_IS_LT:            no_pre,no_post,var "@r $$;",exec        "$$=C_INTIS_LT($0,$1);" "$$";
  1374.  
  1375. C_LONG_CREATE_INT:      no_pre,no_post,exec             "INTC_LONG($1)"; 
  1376. C_LONG_INT:             no_pre,no_post,exec             "C_LONGINT($0)";
  1377. C_LONG_ZERO:            no_pre,no_post,exec             "C_LONG_zero";
  1378. C_LONG_PLUS:            arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONGPLUS($0,$1);" "$$";
  1379. C_LONG_MINUS:           arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONGMINUS($0,$1);" "$$";
  1380. C_LONG_TIMES:           arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONGTIMES($0,$1);" "$$";
  1381. C_LONG_DIV:             arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONGDIV($0,$1);" "$$";
  1382. C_LONG_IS_EQ:           no_pre,no_post,var "@r $$;",exec        "$$=C_LONG_IS_EQ($0,$1);" "$$";
  1383. C_LONG_IS_LT:           no_pre,no_post,var "@r $$;",exec        "$$=C_LONGIS_LT($0,$1);" "$$";
  1384.  
  1385. C_UNSIGNED_SHORT_CREATE_INT:    no_pre,no_post,exec             "INTC_UNSIGNED_SHORT($1)"; 
  1386. C_UNSIGNED_SHORT_INT:           no_pre,no_post,exec             "C_UNSIGNED_SHORTINT($0)";
  1387. C_UNSIGNED_SHORT_ZERO:          no_pre,no_post,exec             "C_UNSIGNED_SHORT_zero";
  1388. C_UNSIGNED_SHORT_PLUS:          arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_SHORTPLUS($0,$1);" "$$";
  1389. C_UNSIGNED_SHORT_MINUS:         arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_SHORTMINUS($0,$1);" "$$";
  1390. C_UNSIGNED_SHORT_TIMES:         arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_SHORTTIMES($0,$1);" "$$";
  1391. C_UNSIGNED_SHORT_DIV:           arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_SHORTDIV($0,$1);" "$$";
  1392. C_UNSIGNED_SHORT_IS_EQ:         no_pre,no_post,var "@r $$;",exec        "$$=C_UNSIGNED_SHORT_IS_EQ($0,$1);" "$$";
  1393. C_UNSIGNED_SHORT_IS_LT:         no_pre,no_post,var "@r $$;",exec        "$$=C_UNSIGNED_SHORTIS_LT($0,$1);" "$$";
  1394.  
  1395. C_UNSIGNED_INT_CREATE_INT:      no_pre,no_post,exec             "INTC_UNSIGNED_INT($1)"; 
  1396. C_UNSIGNED_INT_INT:             no_pre,no_post,exec             "C_UNSIGNED_INTINT($0)";
  1397. C_UNSIGNED_INT_ZERO:            no_pre,no_post,exec             "C_UNSIGNED_INT_zero";
  1398. C_UNSIGNED_INT_PLUS:            arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_INTPLUS($0,$1);" "$$";
  1399. C_UNSIGNED_INT_MINUS:           arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_INTMINUS($0,$1);" "$$";
  1400. C_UNSIGNED_INT_TIMES:           arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_INTTIMES($0,$1);" "$$";
  1401. C_UNSIGNED_INT_DIV:             arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_INTDIV($0,$1);" "$$";
  1402. C_UNSIGNED_INT_IS_EQ:           no_pre,no_post,var "@r $$;",exec        "$$=C_UNSIGNED_INT_IS_EQ($0,$1);" "$$";
  1403. C_UNSIGNED_INT_IS_LT:           no_pre,no_post,var "@r $$;",exec        "$$=C_UNSIGNED_INTIS_LT($0,$1);" "$$";
  1404.  
  1405. C_UNSIGNED_LONG_CREATE_INT:     no_pre,no_post,exec             "INTC_UNSIGNED_LONG($1)"; 
  1406. C_UNSIGNED_LONG_INT:            no_pre,no_post,exec             "C_UNSIGNED_LONGINT($0)";
  1407. C_UNSIGNED_LONG_ZERO:           no_pre,no_post,exec             "C_UNSIGNED_LONG_zero";
  1408. C_UNSIGNED_LONG_PLUS:           arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_LONGPLUS($0,$1);" "$$";
  1409. C_UNSIGNED_LONG_MINUS:          arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_LONGMINUS($0,$1);" "$$";
  1410. C_UNSIGNED_LONG_TIMES:          arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_LONGTIMES($0,$1);" "$$";
  1411. C_UNSIGNED_LONG_DIV:            arith,no_pre,no_post,var "@r $$;", exec "$$=C_UNSIGNED_LONGDIV($0,$1);" "$$";
  1412. C_UNSIGNED_LONG_IS_EQ:          no_pre,no_post,var "@r $$;",exec        "$$=C_UNSIGNED_LONG_IS_EQ($0,$1);" "$$";
  1413. C_UNSIGNED_LONG_IS_LT:          no_pre,no_post,var "@r $$;",exec        "$$=C_UNSIGNED_LONGIS_LT($0,$1);" "$$";
  1414.  
  1415. C_FLOAT_CREATE_FLT:     no_pre,no_post,exec             "FLTC_FLOAT($1)"; 
  1416. C_FLOAT_FLT:            no_pre,no_post,exec             "C_FLOATFLT($0)";
  1417. C_FLOAT_ZERO:           no_pre,no_post,exec             "C_FLOAT_zero";
  1418. C_FLOAT_PLUS:           arith,no_pre,no_post,var "@r $$;", exec "$$=C_FLOATPLUS($0,$1);" "$$";
  1419. C_FLOAT_MINUS:          arith,no_pre,no_post,var "@r $$;", exec "$$=C_FLOATMINUS($0,$1);" "$$";
  1420. C_FLOAT_TIMES:          arith,no_pre,no_post,var "@r $$;", exec "$$=C_FLOATTIMES($0,$1);" "$$";
  1421. C_FLOAT_DIV:            arith,no_pre,no_post,var "@r $$;", exec "$$=C_FLOATDIV($0,$1);" "$$";
  1422. C_FLOAT_IS_EQ:          no_pre,no_post,var "@r $$;",exec        "$$=C_FLOAT_IS_EQ($0,$1);" "$$";
  1423. C_FLOAT_IS_LT:          no_pre,no_post,var "@r $$;",exec        "$$=C_FLOATIS_LT($0,$1);" "$$";
  1424.  
  1425. C_DOUBLE_CREATE_FLTD:   no_pre,no_post,exec             "FLTDC_DOUBLE($1)"; 
  1426. C_DOUBLE_FLTD:          no_pre,no_post,exec             "C_DOUBLEFLTD($0)";
  1427. C_DOUBLE_ZERO:          no_pre,no_post,exec             "C_DOUBLE_zero";
  1428. C_DOUBLE_PLUS:          arith,no_pre,no_post,var "@r $$;", exec "$$=C_DOUBLEPLUS($0,$1);" "$$";
  1429. C_DOUBLE_MINUS:         arith,no_pre,no_post,var "@r $$;", exec "$$=C_DOUBLEMINUS($0,$1);" "$$";
  1430. C_DOUBLE_TIMES:         arith,no_pre,no_post,var "@r $$;", exec "$$=C_DOUBLETIMES($0,$1);" "$$";
  1431. C_DOUBLE_DIV:           arith,no_pre,no_post,var "@r $$;", exec "$$=C_DOUBLEDIV($0,$1);" "$$";
  1432. C_DOUBLE_IS_EQ:         no_pre,no_post,var "@r $$;",exec        "$$=C_DOUBLE_IS_EQ($0,$1);" "$$";
  1433. C_DOUBLE_IS_LT:         no_pre,no_post,var "@r $$;",exec        "$$=C_DOUBLEIS_LT($0,$1);" "$$";
  1434.  
  1435. C_LONG_DOUBLE_CREATE_FLTD:      no_pre,no_post,exec             "FLTDC_LONG_DOUBLE($1)"; 
  1436. C_LONG_DOUBLE_FLTD:             no_pre,no_post,exec             "C_LONG_DOUBLEFLTD($0)";
  1437. C_LONG_DOUBLE_ZERO:             no_pre,no_post,exec             "C_LONG_DOUBLE_zero";
  1438. C_LONG_DOUBLE_PLUS:             arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONG_DOUBLEPLUS($0,$1);" "$$";
  1439. C_LONG_DOUBLE_MINUS:            arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONG_DOUBLEMINUS($0,$1);" "$$";
  1440. C_LONG_DOUBLE_TIMES:            arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONG_DOUBLETIMES($0,$1);" "$$";
  1441. C_LONG_DOUBLE_DIV:              arith,no_pre,no_post,var "@r $$;", exec "$$=C_LONG_DOUBLEDIV($0,$1);" "$$";
  1442. C_LONG_DOUBLE_IS_EQ:            no_pre,no_post,var "@r $$;",exec        "$$=C_LONG_DOUBLE_IS_EQ($0,$1);" "$$";
  1443. C_LONG_DOUBLE_IS_LT:            no_pre,no_post,var "@r $$;",exec        "$$=C_LONG_DOUBLEIS_LT($0,$1);" "$$";
  1444.  
  1445.  
  1446. C_PTR_CREATE_C_CHAR_PTR:                no_pre,no_post,exec             "(@0)$1";
  1447. C_PTR_CREATE_C_UNSIGNED_CHAR_PTR:       no_pre,no_post,exec             "(@0)$1";
  1448. C_PTR_CREATE_C_SIGNED_CHAR_PTR:         no_pre,no_post,exec             "(@0)$1";
  1449. C_PTR_CREATE_C_SHORT_PTR:               no_pre,no_post,exec             "(@0)$1";
  1450. C_PTR_CREATE_C_INT_PTR:                 no_pre,no_post,exec             "(@0)$1";
  1451. C_PTR_CREATE_C_LONG_PTR:                no_pre,no_post,exec             "(@0)$1";
  1452. C_PTR_CREATE_C_UNSIGNED_SHORT_PTR:      no_pre,no_post,exec             "(@0)$1";
  1453. C_PTR_CREATE_C_UNSIGNED_INT_PTR:        no_pre,no_post,exec             "(@0)$1";
  1454. C_PTR_CREATE_C_UNSIGNED_LONG_PTR:       no_pre,no_post,exec             "(@0)$1";
  1455. C_PTR_CREATE_C_FLOAT_PTR:               no_pre,no_post,exec             "(@0)$1";
  1456. C_PTR_CREATE_C_DOUBLE_PTR:              no_pre,no_post,exec             "(@0)$1";
  1457. C_PTR_CREATE_C_LONG_DOUBLE_PTR:         no_pre,no_post,exec             "(@0)$1";
  1458.  
  1459.  
  1460. C_PTR_ZERO:                     no_pre,no_post,exec             "C_PTR_zero";
  1461. C_CHAR_PTR_ZERO:                no_pre,no_post,exec             "C_CHAR_PTR_zero";
  1462. C_UNSIGNED_CHAR_PTR_ZERO:       no_pre,no_post,exec             "C_UNSIGNED_CHAR_PTR_zero";
  1463. C_SIGNED_CHAR_PTR_ZERO:         no_pre,no_post,exec             "C_SIGNED_CHAR_PTR_zero";
  1464. C_SHORT_PTR_ZERO:               no_pre,no_post,exec             "C_SHORT_PTR_zero";
  1465. C_INT_PTR_ZERO:                 no_pre,no_post,exec             "C_INT_PTR_zero";
  1466. C_LONG_PTR_ZERO:                no_pre,no_post,exec             "C_LONG_PTR_zero";
  1467. C_UNSIGNED_SHORT_PTR_ZERO:      no_pre,no_post,exec             "C_UNSIGNED_SHORT_PTR_zero";
  1468. C_UNSIGNED_INT_PTR_ZERO:        no_pre,no_post,exec             "C_UNSIGNED_INT_PTR_zero";
  1469. C_UNSIGNED_LONG_PTR_ZERO:       no_pre,no_post,exec             "C_UNSIGNED_LONG_PTR_zero";
  1470. C_FLOAT_PTR_ZERO:               no_pre,no_post,exec             "C_FLOAT_PTR_zero";
  1471. C_DOUBLE_PTR_ZERO:              no_pre,no_post,exec             "C_DOUBLE_PTR_zero";
  1472. C_LONG_DOUBLE_PTR_ZERO:         no_pre,no_post,exec             "C_LONG_DOUBLE_PTR_zero";
  1473.  
  1474. C_PTR_IS_EQ:            no_pre,no_post,var "@r $$;",exec        "$$=C_PTR_IS_EQ($0,$1);" "$$";
  1475. C_CHAR_PTR_IS_EQ:       no_pre,no_post,var "@r $$;",exec        "$$=C_CHAR_PTR_IS_EQ($0,$1);" "$$";
  1476. C_UNSIGNED_CHAR_PTR_IS_EQ: no_pre,no_post,var "@r $$;",exec     "$$=C_UNSIGNED_CHAR_PTR_IS_EQ($0,$1);" "$$";
  1477. C_SIGNED_CHAR_PTR_IS_EQ:        no_pre,no_post,var "@r $$;",exec        "$$=C_SIGNED_CHAR_PTR_IS_EQ($0,$1);" "$$";
  1478. C_SHORT_PTR_IS_EQ:      no_pre,no_post,var "@r $$;",exec        "$$=C_SHORT_PTR_IS_EQ($0,$1);" "$$";
  1479. C_INT_PTR_IS_EQ:        no_pre,no_post,var "@r $$;",exec        "$$=C_INT_PTR_IS_EQ($0,$1);" "$$";
  1480. C_LONG_PTR_IS_EQ:       no_pre,no_post,var "@r $$;",exec        "$$=C_LONG_PTR_IS_EQ($0,$1);" "$$";
  1481. C_UNSIGNED_SHORT_PTR_IS_EQ:     no_pre,no_post,var "@r $$;",exec        "$$=C_UNSIGNED_SHORT_PTR_IS_EQ($0,$1);" "$$";
  1482. C_UNSIGNED_INT_PTR_IS_EQ:       no_pre,no_post,var "@r $$;",exec        "$$=C_UNSIGNED_INT_PTR_IS_EQ($0,$1);" "$$";
  1483. C_UNSIGNED_LONG_PTR_IS_EQ:      no_pre,no_post,var "@r $$;",exec        "$$=C_UNSIGNED_LONG_PTR_IS_EQ($0,$1);" "$$";
  1484. C_FLOAT_PTR_IS_EQ:      no_pre,no_post,var "@r $$;",exec        "$$=C_FLOAT_PTR_IS_EQ($0,$1);" "$$";
  1485. C_DOUBLE_PTR_IS_EQ:     no_pre,no_post,var "@r $$;",exec        "$$=C_DOUBLE_PTR_IS_EQ($0,$1);" "$$";
  1486. C_LONG_DOUBLE_PTR_IS_EQ:        no_pre,no_post,var "@r $$;",exec        "$$=C_LONG_DOUBLE_PTR_IS_EQ($0,$1);" "$$";
  1487.  
  1488. CONVERT_FROM_C_PTR_CREATE_C_PTR:        no_pre,no_post,exec             "(@0)$1";
  1489.  
  1490.  
  1491.  
  1492.  
  1493.  
  1494.  
  1495.  
  1496.